mirror of
https://github.com/versia-pub/api.git
synced 2026-03-13 04:09:15 +01:00
feat(federation): 👽 Update to Versia 0.5
This commit is contained in:
parent
afec384a51
commit
5114df4454
8 changed files with 220 additions and 31 deletions
40
federation/schemas/extensions/groups.ts
Normal file
40
federation/schemas/extensions/groups.ts
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
import { z } from "zod";
|
||||
import { EntitySchema } from "../base.ts";
|
||||
import { TextOnlyContentFormatSchema } from "../content_format.ts";
|
||||
|
||||
export const GroupSchema = EntitySchema.extend({
|
||||
type: z.literal("pub.versia:groups/Group"),
|
||||
name: TextOnlyContentFormatSchema.optional().nullable(),
|
||||
description: TextOnlyContentFormatSchema.optional().nullable(),
|
||||
open: z.boolean().optional().nullable(),
|
||||
members: z.string().url(),
|
||||
notes: z.string().url().optional().nullable(),
|
||||
});
|
||||
|
||||
export const GroupSubscribeSchema = EntitySchema.extend({
|
||||
type: z.literal("pub.versia:groups/Subscribe"),
|
||||
uri: z.null().optional(),
|
||||
subscriber: z.string().url(),
|
||||
group: z.string().url(),
|
||||
});
|
||||
|
||||
export const GroupUnsubscribeSchema = EntitySchema.extend({
|
||||
type: z.literal("pub.versia:groups/Unsubscribe"),
|
||||
uri: z.null().optional(),
|
||||
subscriber: z.string().url(),
|
||||
group: z.string().url(),
|
||||
});
|
||||
|
||||
export const GroupSubscribeAcceptSchema = EntitySchema.extend({
|
||||
type: z.literal("pub.versia:groups/SubscribeAccept"),
|
||||
uri: z.null().optional(),
|
||||
subscriber: z.string().url(),
|
||||
group: z.string().url(),
|
||||
});
|
||||
|
||||
export const GroupSubscribeRejectSchema = EntitySchema.extend({
|
||||
type: z.literal("pub.versia:groups/SubscribeReject"),
|
||||
uri: z.null().optional(),
|
||||
subscriber: z.string().url(),
|
||||
group: z.string().url(),
|
||||
});
|
||||
|
|
@ -10,7 +10,7 @@ import {
|
|||
AudioOnlyContentFormatSchema,
|
||||
ImageOnlyContentFormatSchema,
|
||||
} from "../content_format.ts";
|
||||
import { isISOString } from "../regex.ts";
|
||||
import { ianaTimezoneRegex, isISOString } from "../regex.ts";
|
||||
|
||||
/**
|
||||
* @description Vanity extension entity
|
||||
|
|
@ -103,5 +103,10 @@ export const VanityExtensionSchema = z
|
|||
.nullable(),
|
||||
location: z.string().optional().nullable(),
|
||||
aliases: z.array(z.string().url()).optional().nullable(),
|
||||
timezone: z
|
||||
.string()
|
||||
.regex(ianaTimezoneRegex, "must be a valid IANA timezone")
|
||||
.optional()
|
||||
.nullable(),
|
||||
})
|
||||
.strict();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue