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

PaqueteServicioEstadoDocs
dnsZonas y registros DNS✅ API realVer →
imageSubida, procesamiento y CDN de imágenes✅ API realVer →
mailCorreo transaccional✅ API realVer →
videoTranscodificación y streaming (HLS)🚧 Borrador, sin servidor realVer →
marketingListas, segmentos y campañas de email🚧 Borrador, sin servidor realVer →

Tests

# mocks, sin credenciales
go test ./...

# integración real, requiere WA_TEST_CLIENT_ID / WA_TEST_TOKEN
go test -run Integration -v ./...