import type { AcmeCloudflareSettingsDto, CertificateIssueJob, CertificateIssueRequest, CertificatesListResponse, } from "@mmapp/contracts/certificates" import { requestJson } from "@/shared/api/http-client" export async function listCertificates(baseUrl: string): Promise { return requestJson(baseUrl, "/api/certificates") } export async function refreshCertificates(baseUrl: string): Promise { return requestJson(baseUrl, "/api/certificates/refresh", { method: "POST" }) } export async function createCertificateIssueJob( baseUrl: string, payload: CertificateIssueRequest, ): Promise<{ jobId: string }> { return requestJson<{ jobId: string }>(baseUrl, "/api/certificates/issue", { method: "POST", body: JSON.stringify(payload), }) } export async function getCertificateIssueJob( baseUrl: string, jobId: string, ): Promise { return requestJson(baseUrl, `/api/certificates/issue/${encodeURIComponent(jobId)}`) } export async function getAcmeSettings(baseUrl: string): Promise { return requestJson(baseUrl, "/api/certificates/acme-settings") } export async function putAcmeSettings( baseUrl: string, payload: { directoryUrl?: string defaultZoneId?: string | null cloudflareApiToken?: string | null }, ): Promise { return requestJson(baseUrl, "/api/certificates/acme-settings", { method: "PUT", body: JSON.stringify(payload), }) } export async function testAcmeSettings( baseUrl: string, payload?: { cloudflareApiToken?: string }, ): Promise<{ ok: boolean; message?: string }> { return requestJson<{ ok: boolean; message?: string }>(baseUrl, "/api/certificates/acme-settings/test", { method: "POST", body: JSON.stringify(payload ?? {}), }) }