@guildxyz/bev3
Version:
Schemas and types related to the Guild.xyz v3 API
165 lines (162 loc) • 4.13 kB
text/typescript
import { z } from 'zod';
export const UserFullSchema = z.object({
id: z
.string()
.regex(
new RegExp(
"^[0-9a-f]{8}-[0-9a-f]{4}-[45][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
),
)
.describe("Unique identifier (UUID v4 or v5 format)"),
legacyId: z
.string()
.max(50)
.describe("Legacy system unique identifier for backward compatibility")
.optional(),
createdAt: z
.number()
.int()
.gte(1)
.describe("Unix timestamp of creation date"),
updatedAt: z.number().int().gte(1).describe("Unix timestamp of last update"),
system: z
.object({})
.catchall(z.any())
.describe("System-managed settings for internal classification")
.optional(),
name: z
.string()
.min(1)
.max(255)
.describe("Name of the template (1-255 characters)"),
urlName: z
.string()
.max(255)
.describe("URL-friendly name (optional, max 255 characters)")
.optional(),
description: z
.string()
.max(3000)
.describe(
"Detailed description of the template (optional, max 3000 characters)",
)
.optional(),
imageUrl: z
.string()
.max(255)
.describe("URL to the template's primary image")
.optional(),
backgroundImageUrl: z
.string()
.max(255)
.describe("URL to the template's background image")
.optional(),
visibility: z
.object({})
.catchall(z.any())
.describe("Conditions that determine template visibility")
.optional(),
settings: z
.object({})
.catchall(z.any())
.describe("Template-specific settings")
.optional(),
searchTags: z
.array(z.string().max(50))
.max(20)
.describe("Tags used for template search functionality")
.optional(),
categoryTags: z
.array(z.string().max(30))
.max(10)
.describe("Category classification tags")
.optional(),
guilds: z
.array(
z.object({
guildId: z
.string()
.describe("The ID of the guild the member belongs to")
.optional(),
roles: z
.array(
z.object({
roleId: z
.string()
.regex(
new RegExp(
"^[0-9a-f]{8}-[0-9a-f]{4}-[45][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
),
)
.describe("Roles assigned to the user")
.optional(),
}),
)
.optional(),
joinedAt: z
.number()
.int()
.describe("Timestamp of when the member joined the guild")
.optional(),
lastActive: z
.number()
.int()
.describe("Timestamp of when the member was last active in the guild")
.optional(),
}),
)
.optional(),
identities: z
.array(
z
.object({
identityId: z.string().describe("The ID of the identity").optional(),
})
.catchall(z.any()),
)
.optional(),
farcaster: z
.array(
z.object({
fid: z.string().describe("The Farcaster ID"),
username: z.string().describe("Farcaster username").optional(),
avatar: z.string().max(255).describe("Farcaster avatar URL").optional(),
isPrimary: z.boolean().optional(),
}),
)
.nullable()
.optional(),
ethereum: z
.array(
z.object({
address: z.string().describe("The Ethereum address of the user"),
isPrimary: z.boolean().optional(),
isDelegated: z.boolean().optional(),
}),
)
.nullable()
.optional(),
profiles: z
.array(
z.object({
referrerUserId: z
.string()
.describe("The ID of the user who referred this user")
.optional(),
isPrimary: z.boolean().optional(),
}),
)
.nullable()
.optional(),
verifications: z
.array(
z.object({
dateVerified: z.number().int().optional(),
type: z.string().optional(),
}),
)
.nullable()
.optional(),
})
.strict()
.describe("A user profile in the system");