Barazo AppView backend barazo.forum
at main 67 lines 2.3 kB view raw
1import { z } from 'zod' 2 3// --------------------------------------------------------------------------- 4// Trust seed schemas 5// --------------------------------------------------------------------------- 6 7export const trustSeedCreateSchema = z.object({ 8 did: z.string().min(1), 9 communityId: z.string().optional(), 10 reason: z.string().max(500).optional(), 11}) 12 13export const trustSeedQuerySchema = z.object({ 14 cursor: z.string().optional(), 15 limit: z.coerce.number().int().min(1).max(100).default(25), 16}) 17 18// --------------------------------------------------------------------------- 19// Sybil cluster schemas 20// --------------------------------------------------------------------------- 21 22export const clusterQuerySchema = z.object({ 23 status: z.enum(['flagged', 'dismissed', 'monitoring', 'banned']).optional(), 24 cursor: z.string().optional(), 25 limit: z.coerce.number().int().min(1).max(100).default(25), 26 sort: z.enum(['detected_at', 'member_count', 'confidence']).optional(), 27}) 28 29export const clusterStatusUpdateSchema = z.object({ 30 status: z.enum(['dismissed', 'monitoring', 'banned']), 31}) 32 33// --------------------------------------------------------------------------- 34// PDS trust factor schemas 35// --------------------------------------------------------------------------- 36 37export const pdsTrustUpdateSchema = z.object({ 38 pdsHost: z 39 .string() 40 .min(1) 41 .max(253) 42 .regex( 43 /^(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/, 44 'Must be a valid hostname' 45 ), 46 trustFactor: z.number().min(0.0).max(1.0), 47}) 48 49export const pdsTrustQuerySchema = z.object({ 50 cursor: z.string().optional(), 51 limit: z.coerce.number().int().min(1).max(100).default(25), 52}) 53 54// --------------------------------------------------------------------------- 55// Behavioral flag schemas 56// --------------------------------------------------------------------------- 57 58export const behavioralFlagUpdateSchema = z.object({ 59 status: z.enum(['dismissed', 'action_taken']), 60}) 61 62export const behavioralFlagQuerySchema = z.object({ 63 flagType: z.enum(['burst_voting', 'content_similarity', 'low_diversity']).optional(), 64 status: z.enum(['pending', 'dismissed', 'action_taken']).optional(), 65 cursor: z.string().optional(), 66 limit: z.coerce.number().int().min(1).max(100).default(25), 67})