UNPKG

@guildxyz/bev3

Version:

Schemas and types related to the Guild.xyz v3 API

165 lines (162 loc) 4.13 kB
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");