// Platform announcements helpers. // Backend: /api/v1/admin/announcements (admin CRUD). import type { ArcadiaClient } from "@crema/arcadia-core-client" export type AnnouncementType = | "info" | "warning" | "maintenance" | "incident" | "feature" | string export type AnnouncementAudience = "all" | "tenant" | "platform" | string export interface Announcement { id: string tenant_id: string | null announcement_type: AnnouncementType title: string body: string | null action_label: string | null action_url: string | null starts_at: string | null ends_at: string | null audience: AnnouncementAudience dismissible: boolean active: boolean created_by_id: string | null inserted_at: string updated_at: string } export interface AnnouncementInput { title: string body?: string announcement_type?: AnnouncementType audience?: AnnouncementAudience action_label?: string | null action_url?: string | null starts_at?: string | null ends_at?: string | null dismissible?: boolean active?: boolean /** Platform-wide if null, otherwise scoped. */ tenant_id?: string | null } const BASE = "/api/v1/admin/announcements" export async function listAnnouncements(arcadia: ArcadiaClient): Promise { const res = await arcadia.GET<{ data: Announcement[] }>(BASE) return res.data } export async function createAnnouncement( arcadia: ArcadiaClient, input: AnnouncementInput, ): Promise { const res = await arcadia.POST<{ data: Announcement }>(BASE, { body: { announcement: input }, }) return res.data } export async function updateAnnouncement( arcadia: ArcadiaClient, id: string, input: Partial, ): Promise { const res = await arcadia.PUT<{ data: Announcement }>(`${BASE}/${id}`, { body: { announcement: input }, }) return res.data } export async function deleteAnnouncement(arcadia: ArcadiaClient, id: string): Promise { await arcadia.DELETE(`${BASE}/${id}`) }