135 lines
6.0 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.simFeaturesRequestSchema = exports.simChangePlanRequestSchema = exports.simTopupRequestSchema = exports.simOrderActivationRequestSchema = exports.simOrderActivationAddonsSchema = exports.simOrderActivationMnpSchema = exports.simFeaturesUpdateRequestSchema = exports.simTopUpHistoryRequestSchema = exports.simCancelRequestSchema = exports.simPlanChangeRequestSchema = exports.simTopUpRequestSchema = exports.simTopUpHistorySchema = exports.simTopUpHistoryEntrySchema = exports.simUsageSchema = exports.recentDayUsageSchema = exports.simDetailsSchema = exports.simTypeSchema = exports.simStatusSchema = void 0;
const zod_1 = require("zod");
exports.simStatusSchema = zod_1.z.enum(["active", "suspended", "cancelled", "pending"]);
exports.simTypeSchema = zod_1.z.enum(["standard", "nano", "micro", "esim"]);
exports.simDetailsSchema = zod_1.z.object({
account: zod_1.z.string(),
status: exports.simStatusSchema,
planCode: zod_1.z.string(),
planName: zod_1.z.string(),
simType: exports.simTypeSchema,
iccid: zod_1.z.string(),
eid: zod_1.z.string(),
msisdn: zod_1.z.string(),
imsi: zod_1.z.string(),
remainingQuotaMb: zod_1.z.number(),
remainingQuotaKb: zod_1.z.number(),
voiceMailEnabled: zod_1.z.boolean(),
callWaitingEnabled: zod_1.z.boolean(),
internationalRoamingEnabled: zod_1.z.boolean(),
networkType: zod_1.z.string(),
activatedAt: zod_1.z.string().optional(),
expiresAt: zod_1.z.string().optional(),
});
exports.recentDayUsageSchema = zod_1.z.object({
date: zod_1.z.string(),
usageKb: zod_1.z.number(),
usageMb: zod_1.z.number(),
});
exports.simUsageSchema = zod_1.z.object({
account: zod_1.z.string(),
todayUsageMb: zod_1.z.number(),
todayUsageKb: zod_1.z.number(),
monthlyUsageMb: zod_1.z.number().optional(),
monthlyUsageKb: zod_1.z.number().optional(),
recentDaysUsage: zod_1.z.array(exports.recentDayUsageSchema),
isBlacklisted: zod_1.z.boolean(),
lastUpdated: zod_1.z.string().optional(),
});
exports.simTopUpHistoryEntrySchema = zod_1.z.object({
quotaKb: zod_1.z.number(),
quotaMb: zod_1.z.number(),
addedDate: zod_1.z.string(),
expiryDate: zod_1.z.string(),
campaignCode: zod_1.z.string(),
});
exports.simTopUpHistorySchema = zod_1.z.object({
account: zod_1.z.string(),
totalAdditions: zod_1.z.number(),
additionCount: zod_1.z.number(),
history: zod_1.z.array(exports.simTopUpHistoryEntrySchema),
});
exports.simTopUpRequestSchema = zod_1.z.object({
quotaMb: zod_1.z
.number()
.int()
.min(100, "Quota must be at least 100MB")
.max(51200, "Quota must be 50GB or less"),
});
exports.simPlanChangeRequestSchema = zod_1.z.object({
newPlanCode: zod_1.z.string().min(1, "New plan code is required"),
assignGlobalIp: zod_1.z.boolean().optional(),
scheduledAt: zod_1.z
.string()
.regex(/^\d{8}$/, "Scheduled date must be in YYYYMMDD format")
.optional(),
});
exports.simCancelRequestSchema = zod_1.z.object({
scheduledAt: zod_1.z
.string()
.regex(/^\d{8}$/, "Scheduled date must be in YYYYMMDD format")
.optional(),
});
exports.simTopUpHistoryRequestSchema = zod_1.z.object({
fromDate: zod_1.z
.string()
.regex(/^\d{8}$/, "From date must be in YYYYMMDD format"),
toDate: zod_1.z
.string()
.regex(/^\d{8}$/, "To date must be in YYYYMMDD format"),
});
exports.simFeaturesUpdateRequestSchema = zod_1.z.object({
voiceMailEnabled: zod_1.z.boolean().optional(),
callWaitingEnabled: zod_1.z.boolean().optional(),
internationalRoamingEnabled: zod_1.z.boolean().optional(),
networkType: zod_1.z.enum(["4G", "5G"]).optional(),
});
exports.simOrderActivationMnpSchema = zod_1.z.object({
reserveNumber: zod_1.z.string().min(1, "Reserve number is required"),
reserveExpireDate: zod_1.z.string().regex(/^\d{8}$/, "Reserve expire date must be in YYYYMMDD format"),
account: zod_1.z.string().optional(),
firstnameKanji: zod_1.z.string().optional(),
lastnameKanji: zod_1.z.string().optional(),
firstnameZenKana: zod_1.z.string().optional(),
lastnameZenKana: zod_1.z.string().optional(),
gender: zod_1.z.string().optional(),
birthday: zod_1.z.string().regex(/^\d{8}$/, "Birthday must be in YYYYMMDD format").optional(),
});
exports.simOrderActivationAddonsSchema = zod_1.z.object({
voiceMail: zod_1.z.boolean().optional(),
callWaiting: zod_1.z.boolean().optional(),
});
exports.simOrderActivationRequestSchema = zod_1.z.object({
planSku: zod_1.z.string().min(1, "Plan SKU is required"),
simType: zod_1.z.enum(["eSIM", "Physical SIM"]),
eid: zod_1.z.string().min(15, "EID must be at least 15 characters").optional(),
activationType: zod_1.z.enum(["Immediate", "Scheduled"]),
scheduledAt: zod_1.z.string().regex(/^\d{8}$/, "Scheduled date must be in YYYYMMDD format").optional(),
addons: exports.simOrderActivationAddonsSchema.optional(),
mnp: exports.simOrderActivationMnpSchema.optional(),
msisdn: zod_1.z.string().min(1, "Phone number (msisdn) is required"),
oneTimeAmountJpy: zod_1.z.number().nonnegative("One-time amount must be non-negative"),
monthlyAmountJpy: zod_1.z.number().nonnegative("Monthly amount must be non-negative"),
}).refine((data) => {
if (data.simType === "eSIM" && (!data.eid || data.eid.length < 15)) {
return false;
}
return true;
}, {
message: "EID is required for eSIM and must be at least 15 characters",
path: ["eid"],
}).refine((data) => {
if (data.activationType === "Scheduled" && !data.scheduledAt) {
return false;
}
return true;
}, {
message: "Scheduled date is required for Scheduled activation",
path: ["scheduledAt"],
});
exports.simTopupRequestSchema = exports.simTopUpRequestSchema;
exports.simChangePlanRequestSchema = exports.simPlanChangeRequestSchema;
exports.simFeaturesRequestSchema = exports.simFeaturesUpdateRequestSchema;
//# sourceMappingURL=schema.js.map