@guildxyz/bev3
Version:
Schemas and types related to the Guild.xyz v3 API
119 lines (116 loc) • 3.14 kB
text/typescript
import { z } from 'zod';
export const RoleGroupFullSchema = 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(),
guildId: z.string().describe("The ID of the guild").optional(),
adminRoleId: z
.string()
.describe("An admin role that accumulates all the privileges.")
.optional(),
type: z
.enum(["CATEGORY", "QUEST", "CAMPAIGN", "EVENT"])
.describe("The type of role group")
.optional(),
permissions: z
.object({
read: 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("The reward ID that controls this permission action")
.optional(),
update: 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("The reward ID that controls this permission action")
.optional(),
delete: 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("The reward ID that controls this permission action")
.optional(),
})
.optional(),
})
.strict()
.describe("A collection of related roles within a guild");