mirror of
https://github.com/jakejarvis/hoot.git
synced 2025-10-18 20:14:25 -04:00
97 lines
2.6 KiB
TypeScript
97 lines
2.6 KiB
TypeScript
import { z } from "zod";
|
|
import { ProviderRefSchema } from "../internal/provider";
|
|
|
|
// https://github.com/jakejarvis/rdapper/blob/main/src/types.ts
|
|
export const RegistrationSchema = z.object({
|
|
domain: z.string(),
|
|
tld: z.string(),
|
|
isRegistered: z.boolean(),
|
|
unicodeName: z.string().optional(),
|
|
punycodeName: z.string().optional(),
|
|
registry: z.string().optional(),
|
|
registrar: z
|
|
.object({
|
|
name: z.string().optional(),
|
|
ianaId: z.string().optional(),
|
|
url: z.string().optional(),
|
|
email: z.string().optional(),
|
|
phone: z.string().optional(),
|
|
})
|
|
.optional(),
|
|
reseller: z.string().optional(),
|
|
statuses: z
|
|
.array(
|
|
z.object({
|
|
status: z.string(),
|
|
description: z.string().optional(),
|
|
raw: z.string().optional(),
|
|
}),
|
|
)
|
|
.optional(),
|
|
creationDate: z.string().optional(),
|
|
updatedDate: z.string().optional(),
|
|
expirationDate: z.string().optional(),
|
|
deletionDate: z.string().optional(),
|
|
transferLock: z.boolean().optional(),
|
|
dnssec: z
|
|
.object({
|
|
enabled: z.boolean(),
|
|
dsRecords: z
|
|
.array(
|
|
z.object({
|
|
keyTag: z.number().optional(),
|
|
algorithm: z.number().optional(),
|
|
digestType: z.number().optional(),
|
|
digest: z.string().optional(),
|
|
}),
|
|
)
|
|
.optional(),
|
|
})
|
|
.optional(),
|
|
nameservers: z
|
|
.array(
|
|
z.object({
|
|
host: z.string(),
|
|
ipv4: z.array(z.string()).optional(),
|
|
ipv6: z.array(z.string()).optional(),
|
|
}),
|
|
)
|
|
.optional(),
|
|
contacts: z
|
|
.array(
|
|
z.object({
|
|
type: z.enum([
|
|
"registrant",
|
|
"admin",
|
|
"tech",
|
|
"billing",
|
|
"abuse",
|
|
"registrar",
|
|
"reseller",
|
|
"unknown",
|
|
]),
|
|
name: z.string().optional(),
|
|
organization: z.string().optional(),
|
|
email: z.union([z.string(), z.array(z.string())]).optional(),
|
|
phone: z.union([z.string(), z.array(z.string())]).optional(),
|
|
fax: z.union([z.string(), z.array(z.string())]).optional(),
|
|
street: z.array(z.string()).optional(),
|
|
city: z.string().optional(),
|
|
state: z.string().optional(),
|
|
postalCode: z.string().optional(),
|
|
country: z.string().optional(),
|
|
countryCode: z.string().optional(),
|
|
}),
|
|
)
|
|
.optional(),
|
|
privacyEnabled: z.boolean().optional(),
|
|
whoisServer: z.string().optional(),
|
|
rdapServers: z.array(z.string()).optional(),
|
|
source: z.enum(["rdap", "whois"]),
|
|
warnings: z.array(z.string()).optional(),
|
|
|
|
registrarProvider: ProviderRefSchema,
|
|
});
|
|
|
|
export type Registration = z.infer<typeof RegistrationSchema>;
|