API HTTP
URL base https://addtothese.com/api/v1. Autentícate con Authorization: Bearer att_... (token de API) o con la sesión del navegador más X-CSRF-Token. Todos los cuerpos son JSON; los errores tienen la forma {"error": "...", "code": "..."}.
| Método | Ruta | Uso |
|---|---|---|
| POST | /auth/register | {email, password, name} |
| POST | /auth/login | {email, password}; puede responder {mfa_required: true} |
| POST | /auth/totp/verify | {code} |
| POST | /auth/logout | |
| POST | /auth/password/forgot | /auth/password/reset | {email} | {token, password} |
| GET | /auth/oauth/{google|github} | inicia OAuth |
| GET/PATCH | /me | cuenta; PATCH {name} |
| POST | /me/totp/setup | enable | disable | verificación en dos pasos |
| POST | /me/password | {current_password, new_password} |
| GET/POST/DELETE | /tokens[/{id}] | tokens de API; POST {name} devuelve el secreto una sola vez |
| GET/POST/DELETE | /endpoints[/{id}] | POST {subdomain, protocol} |
| POST | /endpoints/ephemeral | {protocol} nombre aleatorio |
| GET/POST/DELETE | /domains[/{id}] | POST {domain, endpoint_id} |
| POST | /domains/{id}/verify | comprobación DNS |
| POST | /agent-token | {endpoints: []} devuelve {token, upstream_url, endpoints, expires_at} |
| GET | /usage | periodo actual e historial |
| GET | /tunnels | agentes conectados |
| GET | /billing/prices | planes y precios de Stripe |
| POST | /billing/checkout | /billing/portal | {price} devuelve {url} |