diff --git a/ui/src/pages/cluster-page.tsx b/ui/src/pages/cluster-page.tsx
index 83a650b..d724c38 100644
--- a/ui/src/pages/cluster-page.tsx
+++ b/ui/src/pages/cluster-page.tsx
@@ -1,36 +1,56 @@
-;
// src/pages/ClustersPage.tsx
-import { useEffect, useMemo, useState } from "react";
-import { clustersApi } from "@/api/clusters";
-import { dnsApi } from "@/api/dns";
-import { loadBalancersApi } from "@/api/loadbalancers";
-import { nodePoolsApi } from "@/api/node_pools";
-import { serversApi } from "@/api/servers";
-import type { DtoClusterResponse, DtoDomainResponse, DtoLoadBalancerResponse, DtoNodePoolResponse, DtoRecordSetResponse, DtoServerResponse } from "@/sdk";
-import { zodResolver } from "@hookform/resolvers/zod";
-import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
-import { AlertCircle, CheckCircle2, CircleSlash2, FileCode2, Globe2, Loader2, MapPin, Pencil, Plus, Search, Server, Wrench } from "lucide-react";
-import { useForm } from "react-hook-form";
-import { toast } from "sonner";
-import { z } from "zod";
-
-
-
-import { truncateMiddle } from "@/lib/utils";
-import { Badge } from "@/components/ui/badge.tsx";
-import { Button } from "@/components/ui/button.tsx";
-import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog.tsx";
-import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form.tsx";
-import { Input } from "@/components/ui/input.tsx";
-import { Label } from "@/components/ui/label.tsx";
-import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select.tsx";
-import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table.tsx";
-import { Textarea } from "@/components/ui/textarea.tsx";
-
-
-
+import { useEffect, useMemo, useState } from "react"
+import { clustersApi } from "@/api/clusters"
+import { dnsApi } from "@/api/dns"
+import { loadBalancersApi } from "@/api/loadbalancers"
+import { nodePoolsApi } from "@/api/node_pools"
+import { serversApi } from "@/api/servers"
+import type {
+ DtoClusterResponse,
+ DtoDomainResponse,
+ DtoLoadBalancerResponse,
+ DtoNodePoolResponse,
+ DtoRecordSetResponse,
+ DtoServerResponse,
+} from "@/sdk"
+import { zodResolver } from "@hookform/resolvers/zod"
+import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"
+import {
+ AlertCircle,
+ CheckCircle2,
+ CircleSlash2,
+ FileCode2,
+ Globe2,
+ Loader2,
+ MapPin,
+ Pencil,
+ Plus,
+ Search,
+ Server,
+ Wrench,
+} from "lucide-react"
+import { useForm } from "react-hook-form"
+import { toast } from "sonner"
+import { z } from "zod"
+import { truncateMiddle } from "@/lib/utils"
+import { Badge } from "@/components/ui/badge.tsx"
+import { Button } from "@/components/ui/button.tsx"
+import {
+ Dialog,
+ DialogContent,
+ DialogFooter,
+ DialogHeader,
+ DialogTitle,
+ DialogTrigger,
+} from "@/components/ui/dialog.tsx"
+import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form.tsx"
+import { Input } from "@/components/ui/input.tsx"
+import { Label } from "@/components/ui/label.tsx"
+import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select.tsx"
+import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table.tsx"
+import { Textarea } from "@/components/ui/textarea.tsx"
// --- Schemas ---
diff --git a/ui/src/pages/org/api-keys.tsx b/ui/src/pages/org/api-keys.tsx
index 210d9ad..34fe17d 100644
--- a/ui/src/pages/org/api-keys.tsx
+++ b/ui/src/pages/org/api-keys.tsx
@@ -8,6 +8,7 @@ import { useForm } from "react-hook-form"
import { toast } from "sonner"
import { z } from "zod"
+import { Badge } from "@/components/ui/badge.tsx"
import { Button } from "@/components/ui/button.tsx"
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card.tsx"
import {
@@ -161,6 +162,7 @@ export const OrgApiKeys = () => {
Scope
Created
Expires
+ Status
@@ -173,6 +175,33 @@ export const OrgApiKeys = () => {
{k.expires_at ? new Date(k.expires_at).toLocaleString() : "-"}
+
+ {(() => {
+ const isExpired = k.expires_at ? new Date(k.expires_at) <= new Date() : false
+
+ if (k.revoked) {
+ return (
+
+ Revoked
+
+ )
+ }
+
+ if (isExpired) {
+ return (
+
+ Expired
+
+ )
+ }
+
+ return (
+
+ Active
+
+ )
+ })()}
+