// Arcadia roles API helpers. // Backed by /api/v1/roles (resources route, except :new and :edit). import type { ArcadiaClient } from "@crema/arcadia-core-client" export interface Role { id: string name: string slug: string description: string | null permissions: string[] is_system: boolean metadata: Record tenant_id: string inserted_at: string updated_at: string } export interface RoleInput { name: string slug: string description?: string | null permissions?: string[] metadata?: Record } export async function listRoles(arcadia: ArcadiaClient): Promise { const res = await arcadia.GET<{ data: Role[] }>("/api/v1/roles") return res.data } export async function getRole(arcadia: ArcadiaClient, id: string): Promise { const res = await arcadia.GET<{ data: Role }>(`/api/v1/roles/${id}`) return res.data } export async function createRole(arcadia: ArcadiaClient, input: RoleInput): Promise { const res = await arcadia.POST<{ data: Role }>("/api/v1/roles", { body: { role: input } }) return res.data } export async function updateRole( arcadia: ArcadiaClient, id: string, input: Partial, ): Promise { const res = await arcadia.PATCH<{ data: Role }>(`/api/v1/roles/${id}`, { body: { role: input }, }) return res.data } export async function deleteRole(arcadia: ArcadiaClient, id: string): Promise { await arcadia.DELETE(`/api/v1/roles/${id}`) }