// API console STAFF — réconciliation Authentik ↔ System User/Employee/Tech/identité (hub /auth/staff/*).
// Écritures réservées admin (gaté côté hub) ; suppression GARDÉE (409 si références → proposer désactivation).
import { HUB_URL as HUB } from 'src/config/hub'

async function j (path, init) {
  const r = await fetch(HUB + path, init)
  const d = await r.json().catch(() => ({}))
  if (!r.ok && r.status !== 409) throw new Error(d.error || ('Staff API ' + r.status))
  return { status: r.status, ...d }
}
const post = (path, body) => j(path, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body || {}) })

export const listStaff = () => j('/auth/staff')
export const provisionStaff = (body) => post('/auth/staff/provision', body)
export const setStaffActive = (email, active) => post('/auth/staff/active', { email, active })
export const staffImpact = (email) => j('/auth/staff/impact?email=' + encodeURIComponent(email))
export const deleteStaff = (email) => j('/auth/staff?email=' + encodeURIComponent(email), { method: 'DELETE' })
// Dé-dup : garde le compte Authentik utilisé, supprime le(s) doublon(s) jamais connecté(s) pour ce courriel.
export const dedupeAccounts = (email) => post('/auth/staff/dedupe', { email })
// Backfill : lie automatiquement Authentik ↔ Employee ↔ Tech dans l'identité unifiée (alias depuis le courriel entreprise).
export const syncIdentities = () => post('/auth/staff/sync-identities', {})
