Files
MikrotikManager/shared/api/certificates.ts
T
Denozordec 43ab17b253
Docker images / prepare-release (push) Successful in 6s
Docker images / backend-image (push) Successful in 2m13s
Docker images / frontend-image (push) Successful in 2m11s
Docker images / updater-image (push) Successful in 50s
Docker images / notify-webhook (push) Has been skipped
Docker images / publish-release (push) Successful in 8s
feat(scheduler): добавить расписание бэкапов и автообновление сертификатов
2026-05-12 21:46:11 +07:00

80 lines
2.5 KiB
TypeScript

import type {
AcmeCloudflareSettingsDto,
CertificateIssueJob,
CertificateIssueRequest,
CertificateRenewSettingsDto,
CertificatesListResponse,
} from "@mmapp/contracts/certificates"
import { requestJson } from "@/shared/api/http-client"
export async function listCertificates(baseUrl: string): Promise<CertificatesListResponse> {
return requestJson<CertificatesListResponse>(baseUrl, "/api/certificates")
}
export async function refreshCertificates(baseUrl: string): Promise<CertificatesListResponse> {
return requestJson<CertificatesListResponse>(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<CertificateIssueJob> {
return requestJson<CertificateIssueJob>(baseUrl, `/api/certificates/issue/${encodeURIComponent(jobId)}`)
}
export async function getAcmeSettings(baseUrl: string): Promise<AcmeCloudflareSettingsDto> {
return requestJson<AcmeCloudflareSettingsDto>(baseUrl, "/api/certificates/acme-settings")
}
export async function putAcmeSettings(
baseUrl: string,
payload: {
directoryUrl?: string
defaultZoneId?: string | null
cloudflareApiToken?: string | null
},
): Promise<AcmeCloudflareSettingsDto> {
return requestJson<AcmeCloudflareSettingsDto>(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 ?? {}),
})
}
export async function getCertificateRenewSettings(baseUrl: string): Promise<CertificateRenewSettingsDto> {
return requestJson<CertificateRenewSettingsDto>(baseUrl, "/api/certificates/renew-settings")
}
export async function putCertificateRenewSettings(
baseUrl: string,
payload: {
enabled?: boolean
intervalSec?: number
renewBeforeDays?: number
},
): Promise<CertificateRenewSettingsDto> {
return requestJson<CertificateRenewSettingsDto>(baseUrl, "/api/certificates/renew-settings", {
method: "PUT",
body: JSON.stringify(payload),
})
}