SPMS_WEB/react/src/api/service.api.ts
SEAN bb4d531d8c feat: 서비스 관리 API 연동 및 UI 개선 (#31)
- 플랫폼 관리 API 연동 (FCM/APNs 인증서 등록/삭제)
- 서비스 상세 통계 카드 대시보드 KPI API 연결
- 통계 서브텍스트 전일 대비 변동 데이터 연결 (변동 없음 표시 포함)
- ServiceHeaderCard/ServiceEditPage optional chaining 버그 수정
- 날짜 표기 YYYY-MM-DD 형식 통일
- 페이지네이션 totalCount 필드명 수정 및 패딩 정렬
- 서비스 등록 완료 모달 UI 통일 및 문구 수정

Closes #31
2026-03-01 10:35:54 +09:00

82 lines
2.0 KiB
TypeScript

import { apiClient } from "./client";
import type { ApiResponse, PaginatedResponse } from "@/types/api";
import type {
ServiceListRequest,
ServiceSummary,
ServiceDetail,
ApiKeyResponse,
CreateServiceRequest,
CreateServiceResponse,
UpdateServiceRequest,
RegisterFcmRequest,
RegisterApnsRequest,
} from "@/features/service/types";
/** 서비스 목록 조회 */
export function fetchServices(data: ServiceListRequest) {
return apiClient.post<PaginatedResponse<ServiceSummary>>(
"/v1/in/service/list",
data,
);
}
/** 서비스 상세 조회 */
export function fetchServiceDetail(serviceCode: string) {
return apiClient.post<ApiResponse<ServiceDetail>>(
`/v1/in/service/${serviceCode}`,
);
}
/** API Key 전체 조회 (마스킹 해제) */
export function fetchApiKey(serviceCode: string) {
return apiClient.post<ApiResponse<ApiKeyResponse>>(
`/v1/in/service/${serviceCode}/apikey/view`,
);
}
/** 서비스 생성 */
export function createService(data: CreateServiceRequest) {
return apiClient.post<ApiResponse<CreateServiceResponse>>(
"/v1/in/service/create",
data,
);
}
/** 서비스 수정 */
export function updateService(data: UpdateServiceRequest) {
return apiClient.post<ApiResponse<null>>(
"/v1/in/service/update",
data,
);
}
/** FCM 인증서 등록 */
export function registerFcm(serviceCode: string, data: RegisterFcmRequest) {
return apiClient.post<ApiResponse<null>>(
`/v1/in/service/${serviceCode}/fcm`,
data,
);
}
/** FCM 인증서 삭제 */
export function deleteFcm(serviceCode: string) {
return apiClient.post<ApiResponse<null>>(
`/v1/in/service/${serviceCode}/fcm/delete`,
);
}
/** APNs 인증서 등록 */
export function registerApns(serviceCode: string, data: RegisterApnsRequest) {
return apiClient.post<ApiResponse<null>>(
`/v1/in/service/${serviceCode}/apns`,
data,
);
}
/** APNs 인증서 삭제 */
export function deleteApns(serviceCode: string) {
return apiClient.post<ApiResponse<null>>(
`/v1/in/service/${serviceCode}/apns/delete`,
);
}