diff --git a/apps/web/src/types/api.gen.ts b/apps/web/src/types/api.gen.ts index cebb205..20c5c93 100644 --- a/apps/web/src/types/api.gen.ts +++ b/apps/web/src/types/api.gen.ts @@ -763,7 +763,7 @@ export interface paths { put?: never; /** * Зарегистрировать спикер - * @description Реплика, canary и т.д. + * @description Реплика или master. Для replica 201 содержит agent_secret, node_token и install.docker_commands (bird2 + agent + Traefik LE DNS-01) — один раз. */ post: operations["createSpeaker"]; delete?: never; @@ -2733,11 +2733,38 @@ export interface components { role: string; /** @description URL agent или https://AGENT_DOMAIN */ endpoint: string; - /** @description JSON-объект. Ключи node_ipv4, bird_bgp_source_ipv4 (default = node_ipv4), agent_domain, agent_secret (генерируется при создании если пуст). */ - meta_json?: string; + /** @description JSON-объект (строка или object). Ключи node_ipv4, bird_bgp_source_ipv4 (default = node_ipv4), agent_domain, agent_secret (генерируется при создании если пуст). */ + meta_json?: string | Record; + /** @description Email ACME для Traefik на ноде. Только для генерации install.docker_commands, не сохраняется. */ + letsencrypt_email?: string; + /** @description Cloudflare DNS API token (Zone:DNS:Edit) для LE DNS-01. Только для install-сниппета, не сохраняется. */ + cf_dns_api_token?: string; + /** @description CIDR/IP панели для Traefik ipallowlist. Только для install-сниппета, не сохраняется. */ + panel_ip_whitelist?: string; + /** + * Format: uri + * @description Публичный HTTPS URL панели (EVOBGP_CONTROL_PLANE_URL на реплике). Если пуст — из Origin / X-Forwarded-Host. + */ + control_plane_url?: string; } & { [key: string]: unknown; }; + /** @description Одноразовый пакет установки реплики (только POST /v1/speakers 201). */ + SpeakerInstall: { + /** @description Bash: sysctl, heredoc docker-compose.yaml (bird2 + agent + Traefik DNS-01) и docker compose up -d. */ + docker_commands?: string; + /** @description Тело docker-compose.yaml без heredoc (превью). */ + compose_yaml?: string; + }; + BgpSpeakerCreated: components["schemas"]["BgpSpeaker"] & { + /** @description Bearer для Panel→Node (EVOBGP_AGENT_SECRET). Только в 201. */ + agent_secret?: string; + /** @description API-ключ role=node (EVOBGP_NODE_TOKEN). Только в 201. */ + node_token?: string; + /** @description Ed25519 pubkey для verify-bundle на ноде. */ + bundle_pubkey_base64?: string; + install?: components["schemas"]["SpeakerInstall"]; + }; BgpSpeakerPatch: { role?: string; endpoint?: string; @@ -4576,13 +4603,13 @@ export interface operations { }; }; responses: { - /** @description Ресурс создан. */ + /** @description Ресурс создан. Для replica — одноразовый install-сниппет. */ 201: { headers: { [name: string]: unknown; }; content: { - "application/json": components["schemas"]["BgpSpeaker"]; + "application/json": components["schemas"]["BgpSpeakerCreated"]; }; }; default: components["responses"]["DefaultProblem"];