Docs / SDK / Go
SDK de Go
Cliente oficial en Go para conectarte a los servicios de WebAbility: DNS gestionado, procesamiento de imágenes/CDN, correo transaccional y (próximamente) video y email marketing masivo. Es la implementación de referencia — las demás librerías (PHP, JS, Rust, C, Python) siguen el mismo contrato.
Disponible DNS, Imágenes y Mail funcionan contra la API real. Video y Marketing son borradores (ver más abajo).
Instalación
go get github.com/webability/webability-go@latest
Requiere Go 1.21 o superior.
Declarar el cliente
Todo empieza con un objeto wa.API, que firma y envía los requests. Cada módulo (dns, image, mail...) recibe ese mismo objeto ya autenticado.
import (
"github.com/webability/webability-go/wa"
"github.com/webability/webability-go/dns"
)
func main() {
// ClientID (público) y Token (secreto) — Consola → Configuración
api := wa.New("tu-client-id", "tu-token-secreto")
d := dns.New(api)
zones, err := d.ListZones()
if err != nil {
panic(err)
}
}
Por defecto wa.New apunta a https://api.webability.info. Para pruebas contra otro host, usa wa.NewWithURL(baseURL, clientID, token).
Autenticación
Cada cuenta tiene un ClientID (público) y un Token (secreto). El SDK firma cada request con HMAC-SHA256 automáticamente — no hay que calcular nada a mano.
mensaje = "{METODO}|{PATH}|{TIMESTAMP}|{CLIENTID}"
digest = hex(HMAC-SHA256(Token, mensaje))
Headers enviados: X-WA-Client, X-WA-Timestamp, X-WA-Digest. El Token nunca viaja en el request.
Módulos
| Paquete | Servicio | Estado | Docs |
|---|---|---|---|
| dns | Zonas y registros DNS | ✅ API real | Ver → |
| image | Subida, procesamiento y CDN de imágenes | ✅ API real | Ver → |
| Correo transaccional | ✅ API real | Ver → | |
| video | Transcodificación y streaming (HLS) | 🚧 Borrador, sin servidor real | Ver → |
| marketing | Listas, segmentos y campañas de email | 🚧 Borrador, sin servidor real | Ver → |
Tests
# mocks, sin credenciales go test ./... # integración real, requiere WA_TEST_CLIENT_ID / WA_TEST_TOKEN go test -run Integration -v ./...