get($base.'/monitors')->throw()->json('monitors', [])) ->first(fn ($monitor) => ($monitor['url'] ?? null) === $url); if ($existing !== null) { return (string) $existing['id']; } return (string) Http::withToken($token) ->post($base.'/monitors', ['friendly_name' => $name, 'url' => $url, 'type' => 'https']) ->throw()->json('monitor.id'); } public function isHealthy(string $externalId): bool { $endpoint = (string) config('services.monitoring.url'); if (blank($endpoint)) { return true; // no monitoring service configured } try { $monitor = Http::withToken((string) config('services.monitoring.token')) ->get(rtrim($endpoint, '/').'/monitors/'.$externalId)->throw()->json('monitor', []); return ($monitor['status'] ?? '') === 'up'; } catch (\Throwable) { return false; } } public function deregisterTarget(string $externalId): void { $endpoint = (string) config('services.monitoring.url'); if (filled($endpoint)) { Http::withToken((string) config('services.monitoring.token')) ->delete(rtrim($endpoint, '/').'/monitors/'.$externalId)->throw(); } } }