# BYOM Infrastructure API ## Overview RESTful API service for OVH infrastructure management, built with Go. ## Architecture - HTTP Server (port 8080) - Middleware for logging and security - OVH API integration - SSH key management system ## Prerequisites - Go 1.x - OVH Account - Linux/Unix environment ## Quick Start ```bash git clone [repo-url] cd byom-infra-api go mod download go run main.go ``` ## Environment Configuration ```env OVH_APPLICATION_KEY=your_key OVH_APPLICATION_SECRET=your_secret OVH_CONSUMER_KEY=your_consumer_key OVH_ENDPOINT=ovh-eu ``` ## API Endpoints ### SSH Keys | Method | Endpoint | Description | |--------|----------|-------------| | GET | /sshkey | List all keys | | GET | /sshkey/{id} | Get specific key | | POST | /sshkey | Create new key | | DELETE | /sshkey/{keyName} | Delete key | ### Request Examples ```bash # List SSH keys curl http://localhost:8080/sshkey # Create SSH key curl -X POST http://localhost:8080/sshkey \ -H "Content-Type: application/json" \ -d '{"keyName": "mykey", "key": "ssh-ed25519 AAAA..."}' ``` ### DNS Records | Method | Endpoint | Description | |--------|----------|-------------| | GET | /dns | List all A records | | GET | /dns/{subdomain} | Get record ID for subdomain | | POST | /dns | Create new A record with random subdomain | | DELETE | /dns/{recordId} | Delete DNS record | ### Request Examples ```bash # List DNS A records curl http://localhost:8080/dns # Create DNS A record curl -X POST http://localhost:8080/dns \ -H "Content-Type: application/json" \ -d '{"fieldType": "A", "subDomain": "test", "target": "1.2.3.4", "ttl": 3600}' # Get DNS record ID for subdomain curl http://localhost:8080/dns/mysubdomain # Delete DNS record curl -X DELETE http://localhost:8080/dns/1234567 ``` ## Project Structure ``` byom-infra-api/ ├── config/ # OVH configuration ├── handlers/ # Request handlers ├── middleware/ # HTTP middleware ├── routes/ # API routes ├── main.go # Entry point └── README.md # Documentation ``` ## Development ### Running Tests ```bash go test ./... ``` ### Building ```bash go build -o byom-api ``` ## Dependencies - github.com/gorilla/mux - github.com/ovh/go-ovh ## Security - TLS support - Request logging - IP tracking - OVH authentication ## License MIT License ## Contributing 1. Fork repository 2. Create feature branch 3. Submit pull request