feat(api): 🏷️ Port Account OpenAPI schemas from Mastodon API docs

This commit is contained in:
Jesse Wierzbinski 2025-02-05 21:49:39 +01:00
parent 76d1ccc859
commit 2aeada4904
No known key found for this signature in database
95 changed files with 610 additions and 388 deletions

View file

@ -1,12 +1,11 @@
import { apiRoute } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Application, User } from "@versia/kit/db";
import { Users } from "@versia/kit/tables";
import { eq, or } from "drizzle-orm";
import type { Context } from "hono";
import { setCookie } from "hono/cookie";
import { SignJWT } from "jose";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { config } from "~/packages/config-manager";

View file

@ -1,9 +1,8 @@
import { apiRoute } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { db } from "@versia/kit/db";
import { Applications, Tokens } from "@versia/kit/tables";
import { and, eq } from "drizzle-orm";
import { z } from "zod";
import { config } from "~/packages/config-manager";
const schemas = {

View file

@ -1,10 +1,9 @@
import { apiRoute } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { User } from "@versia/kit/db";
import { Users } from "@versia/kit/tables";
import { eq } from "drizzle-orm";
import type { Context } from "hono";
import { z } from "zod";
import { config } from "~/packages/config-manager";
const schemas = {

View file

@ -1,8 +1,7 @@
import { apiRoute, auth, withUserParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Relationship } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
const route = createRoute({
method: "post",

View file

@ -1,9 +1,8 @@
import { apiRoute, auth, withUserParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Relationship } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import ISO6391 from "iso-639-1";
import { z } from "zod";
const schemas = {
param: z.object({

View file

@ -1,9 +1,9 @@
import { apiRoute, auth, withUserParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { Timeline, User } from "@versia/kit/db";
import { createRoute, z } from "@hono/zod-openapi";
import { Timeline } from "@versia/kit/db";
import { RolePermissions, Users } from "@versia/kit/tables";
import { and, gt, gte, lt, sql } from "drizzle-orm";
import { z } from "zod";
import { Account } from "~/classes/schemas/account";
const schemas = {
query: z.object({
@ -43,7 +43,7 @@ const route = createRoute({
description: "A list of accounts that follow the specified account",
content: {
"application/json": {
schema: z.array(User.schema),
schema: z.array(Account),
},
},
headers: {

View file

@ -1,9 +1,9 @@
import { apiRoute, auth, withUserParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { Timeline, User } from "@versia/kit/db";
import { createRoute, z } from "@hono/zod-openapi";
import { Timeline } from "@versia/kit/db";
import { RolePermissions, Users } from "@versia/kit/tables";
import { and, gt, gte, lt, sql } from "drizzle-orm";
import { z } from "zod";
import { Account } from "~/classes/schemas/account";
const schemas = {
query: z.object({
@ -44,7 +44,7 @@ const route = createRoute({
"A list of accounts that the specified account follows",
content: {
"application/json": {
schema: z.array(User.schema),
schema: z.array(Account),
},
},
headers: {

View file

@ -1,8 +1,7 @@
import { apiRoute, auth, withUserParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { User } from "@versia/kit/db";
import { createRoute, z } from "@hono/zod-openapi";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
import { Account } from "~/classes/schemas/account";
const route = createRoute({
method: "get",
@ -26,7 +25,7 @@ const route = createRoute({
description: "Account data",
content: {
"application/json": {
schema: User.schema,
schema: Account,
},
},
},

View file

@ -1,8 +1,7 @@
import { apiRoute, auth, withUserParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Relationship } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
const schemas = {
param: z.object({

View file

@ -1,8 +1,7 @@
import { apiRoute, auth, withUserParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Relationship } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
const schemas = {
param: z.object({

View file

@ -1,8 +1,7 @@
import { apiRoute, auth, withUserParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Relationship } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
const route = createRoute({
method: "post",

View file

@ -1,9 +1,8 @@
import { apiRoute, auth, withUserParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { User } from "@versia/kit/db";
import { createRoute, z } from "@hono/zod-openapi";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { Account } from "~/classes/schemas/account";
import { ErrorSchema } from "~/types/api";
const route = createRoute({
@ -29,7 +28,7 @@ const route = createRoute({
description: "Updated user data",
content: {
"application/json": {
schema: User.schema,
schema: Account,
},
},
},

View file

@ -1,8 +1,7 @@
import { apiRoute, auth, withUserParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Relationship } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
const route = createRoute({
method: "post",

View file

@ -1,8 +1,7 @@
import { apiRoute, auth, withUserParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Role } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { ErrorSchema } from "~/types/api";

View file

@ -1,7 +1,6 @@
import { apiRoute, auth, withUserParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Role } from "@versia/kit/db";
import { z } from "zod";
const route = createRoute({
method: "get",

View file

@ -1,9 +1,8 @@
import { apiRoute, auth, withUserParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Note, Timeline } from "@versia/kit/db";
import { Notes, RolePermissions } from "@versia/kit/tables";
import { and, eq, gt, gte, inArray, isNull, lt, or, sql } from "drizzle-orm";
import { z } from "zod";
const schemas = {
param: z.object({

View file

@ -1,8 +1,7 @@
import { apiRoute, auth, withUserParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Relationship } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
const route = createRoute({
method: "post",

View file

@ -1,8 +1,7 @@
import { apiRoute, auth, withUserParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Relationship } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
import { ErrorSchema } from "~/types/api";
const route = createRoute({

View file

@ -1,8 +1,7 @@
import { apiRoute, auth, withUserParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Relationship } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
const route = createRoute({
method: "post",

View file

@ -1,8 +1,7 @@
import { apiRoute, auth, withUserParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Relationship } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
const route = createRoute({
method: "post",

View file

@ -1,9 +1,9 @@
import { apiRoute, auth, qsQuery } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { User, db } from "@versia/kit/db";
import { RolePermissions, type Users } from "@versia/kit/tables";
import { type InferSelectModel, sql } from "drizzle-orm";
import { z } from "zod";
import { Account } from "~/classes/schemas/account";
const schemas = {
query: z.object({
@ -41,7 +41,7 @@ const route = createRoute({
schema: z.array(
z.object({
id: z.string().uuid(),
accounts: z.array(User.schema),
accounts: z.array(Account),
}),
),
},

View file

@ -1,10 +1,10 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { User } from "@versia/kit/db";
import { RolePermissions, Users } from "@versia/kit/tables";
import { and, eq, isNull } from "drizzle-orm";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { Account } from "~/classes/schemas/account";
import { ErrorSchema } from "~/types/api";
const schemas = {
@ -32,7 +32,7 @@ const route = createRoute({
description: "Account",
content: {
"application/json": {
schema: User.schema,
schema: Account,
},
},
},

View file

@ -1,11 +1,10 @@
import { apiRoute, auth, jsonOrForm } from "@/api";
import { tempmailDomains } from "@/tempmail";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { User } from "@versia/kit/db";
import { Users } from "@versia/kit/tables";
import { and, eq, isNull } from "drizzle-orm";
import ISO6391 from "iso-639-1";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { config } from "~/packages/config-manager";

View file

@ -1,10 +1,10 @@
import { apiRoute, auth, parseUserAddress } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Instance, User } from "@versia/kit/db";
import { RolePermissions, Users } from "@versia/kit/tables";
import { and, eq, isNull } from "drizzle-orm";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { Account } from "~/classes/schemas/account";
import { config } from "~/packages/config-manager";
import { ErrorSchema } from "~/types/api";
@ -33,7 +33,7 @@ const route = createRoute({
description: "Account",
content: {
"application/json": {
schema: User.schema,
schema: Account,
},
},
},

View file

@ -1,8 +1,7 @@
import { apiRoute, auth, qsQuery } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Relationship } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
const schemas = {
query: z.object({

View file

@ -1,11 +1,11 @@
import { apiRoute, auth, parseUserAddress, userAddressValidator } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { User } from "@versia/kit/db";
import { RolePermissions, Users } from "@versia/kit/tables";
import { eq, ilike, not, or, sql } from "drizzle-orm";
import stringComparison from "string-comparison";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { Account } from "~/classes/schemas/account";
const schemas = {
query: z.object({
@ -43,7 +43,7 @@ export const route = createRoute({
description: "Accounts",
content: {
"application/json": {
schema: z.array(User.schema),
schema: z.array(Account),
},
},
},

View file

@ -1,134 +1,72 @@
import { apiRoute, auth, jsonOrForm } from "@/api";
import { mergeAndDeduplicate } from "@/lib";
import { sanitizedHtmlStrip } from "@/sanitization";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Emoji, User } from "@versia/kit/db";
import { RolePermissions, Users } from "@versia/kit/tables";
import { and, eq, isNull } from "drizzle-orm";
import ISO6391 from "iso-639-1";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { contentToHtml } from "~/classes/functions/status";
import { Account } from "~/classes/schemas/account";
import { config } from "~/packages/config-manager/index.ts";
import { ErrorSchema } from "~/types/api";
const schemas = {
json: z.object({
display_name: z
.string()
.min(3)
.trim()
.max(config.validation.max_displayname_size)
.refine(
(s) =>
!config.filters.displayname.some((filter) =>
s.match(filter),
),
"Display name contains blocked words",
)
.optional(),
username: z
.string()
.min(3)
.trim()
.max(config.validation.max_username_size)
.toLowerCase()
.regex(
/^[a-z0-9_-]+$/,
"Username can only contain letters, numbers, underscores and hyphens",
)
.refine(
(s) =>
!config.filters.username.some((filter) => s.match(filter)),
"Username contains blocked words",
)
.optional(),
note: z
.string()
.min(0)
.max(config.validation.max_bio_size)
.trim()
.refine(
(s) => !config.filters.bio.some((filter) => s.match(filter)),
"Bio contains blocked words",
)
.optional(),
avatar: z
.string()
.trim()
.min(1)
.max(2000)
.url()
.transform((a) => new URL(a))
.or(
z
.instanceof(File)
.refine(
(v) => v.size <= config.validation.max_avatar_size,
`Avatar must be less than ${config.validation.max_avatar_size} bytes`,
),
)
.optional(),
header: z
.string()
.trim()
.min(1)
.max(2000)
.url()
.transform((v) => new URL(v))
.or(
z
.instanceof(File)
.refine(
(v) => v.size <= config.validation.max_header_size,
`Header must be less than ${config.validation.max_header_size} bytes`,
),
)
.optional(),
locked: z
.string()
.transform((v) => ["true", "1", "on"].includes(v.toLowerCase()))
.optional(),
bot: z
.string()
.transform((v) => ["true", "1", "on"].includes(v.toLowerCase()))
.optional(),
discoverable: z
.string()
.transform((v) => ["true", "1", "on"].includes(v.toLowerCase()))
.optional(),
source: z
.object({
privacy: z
.enum(["public", "unlisted", "private", "direct"])
.optional(),
sensitive: z
.string()
.transform((v) =>
["true", "1", "on"].includes(v.toLowerCase()),
)
.optional(),
language: z
.enum(ISO6391.getAllCodes() as [string, ...string[]])
.optional(),
})
.optional(),
fields_attributes: z
.array(
z.object({
name: z
.string()
.trim()
.max(config.validation.max_field_name_size),
value: z
.string()
.trim()
.max(config.validation.max_field_value_size),
}),
)
.max(config.validation.max_field_count)
.optional(),
}),
json: z
.object({
display_name: Account.shape.display_name,
username: Account.shape.username,
note: Account.shape.note,
avatar: z
.string()
.trim()
.min(1)
.max(2000)
.url()
.transform((a) => new URL(a))
.or(
z
.instanceof(File)
.refine(
(v) => v.size <= config.validation.max_avatar_size,
`Avatar must be less than ${config.validation.max_avatar_size} bytes`,
),
),
header: z
.string()
.trim()
.min(1)
.max(2000)
.url()
.transform((v) => new URL(v))
.or(
z
.instanceof(File)
.refine(
(v) => v.size <= config.validation.max_header_size,
`Header must be less than ${config.validation.max_header_size} bytes`,
),
),
locked: Account.shape.locked,
bot: Account.shape.bot,
discoverable: Account.shape.discoverable,
source: z
.object({
privacy: Account.shape.source.unwrap().shape.privacy,
sensitive: Account.shape.source.unwrap().shape.sensitive,
language: Account.shape.source.unwrap().shape.language,
})
.partial(),
fields_attributes: z
.array(
z.object({
name: Account.shape.fields.element.shape.name,
value: Account.shape.fields.element.shape.value,
}),
)
.max(config.validation.max_field_count),
})
.partial(),
};
const route = createRoute({
@ -158,7 +96,7 @@ const route = createRoute({
description: "Updated user",
content: {
"application/json": {
schema: User.schema,
schema: Account,
},
},
},

View file

@ -1,6 +1,6 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { User } from "@versia/kit/db";
import { Account } from "~/classes/schemas/account";
const route = createRoute({
method: "get",
@ -18,7 +18,7 @@ const route = createRoute({
description: "Account",
content: {
"application/json": {
schema: User.schema,
schema: Account,
},
},
},

View file

@ -1,8 +1,7 @@
import { apiRoute, jsonOrForm } from "@/api";
import { randomString } from "@/math";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Application } from "@versia/kit/db";
import { z } from "zod";
const schemas = {
json: z.object({

View file

@ -1,9 +1,9 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { Timeline, User } from "@versia/kit/db";
import { createRoute, z } from "@hono/zod-openapi";
import { Timeline } from "@versia/kit/db";
import { RolePermissions, Users } from "@versia/kit/tables";
import { and, gt, gte, lt, sql } from "drizzle-orm";
import { z } from "zod";
import { Account } from "~/classes/schemas/account";
const schemas = {
query: z.object({
@ -34,7 +34,7 @@ const route = createRoute({
description: "Blocks",
content: {
"application/json": {
schema: z.array(User.schema),
schema: z.array(Account),
},
},
},

View file

@ -1,9 +1,8 @@
import { apiRoute, auth, emojiValidator, jsonOrForm } from "@/api";
import { mimeLookup } from "@/content_types";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Emoji } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { config } from "~/packages/config-manager";
import { ErrorSchema } from "~/types/api";

View file

@ -1,10 +1,9 @@
import { apiRoute, auth, emojiValidator, jsonOrForm } from "@/api";
import { mimeLookup } from "@/content_types";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Emoji, Media } from "@versia/kit/db";
import { Emojis, RolePermissions } from "@versia/kit/tables";
import { and, eq, isNull, or } from "drizzle-orm";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { config } from "~/packages/config-manager";
import { ErrorSchema } from "~/types/api";

View file

@ -1,9 +1,8 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Note, Timeline } from "@versia/kit/db";
import { Notes, RolePermissions } from "@versia/kit/tables";
import { and, gt, gte, lt, sql } from "drizzle-orm";
import { z } from "zod";
const schemas = {
query: z.object({

View file

@ -1,8 +1,7 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Relationship, User } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { ErrorSchema } from "~/types/api";

View file

@ -1,8 +1,7 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Relationship, User } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { ErrorSchema } from "~/types/api";

View file

@ -1,9 +1,9 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { Timeline, User } from "@versia/kit/db";
import { createRoute, z } from "@hono/zod-openapi";
import { Timeline } from "@versia/kit/db";
import { RolePermissions, Users } from "@versia/kit/tables";
import { and, gt, gte, lt, sql } from "drizzle-orm";
import { z } from "zod";
import { Account } from "~/classes/schemas/account";
const schemas = {
query: z.object({
@ -32,7 +32,7 @@ const route = createRoute({
description: "Follow requests",
content: {
"application/json": {
schema: z.array(User.schema),
schema: z.array(Account),
},
},
},

View file

@ -1,10 +1,9 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import type { Marker as ApiMarker } from "@versia/client/types";
import { db } from "@versia/kit/db";
import { Markers, RolePermissions } from "@versia/kit/tables";
import { type SQL, and, eq } from "drizzle-orm";
import { z } from "zod";
const schemas = {
markers: z.object({

View file

@ -1,8 +1,7 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Media } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { config } from "~/packages/config-manager/index.ts";
import { ErrorSchema } from "~/types/api";

View file

@ -1,8 +1,7 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Media } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
import { config } from "~/packages/config-manager/index.ts";
import { ErrorSchema } from "~/types/api";

View file

@ -1,9 +1,9 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { Timeline, User } from "@versia/kit/db";
import { createRoute, z } from "@hono/zod-openapi";
import { Timeline } from "@versia/kit/db";
import { RolePermissions, Users } from "@versia/kit/tables";
import { and, gt, gte, lt, sql } from "drizzle-orm";
import { z } from "zod";
import { Account } from "~/classes/schemas/account";
const schemas = {
query: z.object({
@ -33,7 +33,7 @@ const route = createRoute({
description: "Muted users",
content: {
"application/json": {
schema: z.array(User.schema),
schema: z.array(Account),
},
},
},

View file

@ -1,8 +1,7 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Notification } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
const route = createRoute({

View file

@ -1,8 +1,7 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Notification } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { ErrorSchema } from "~/types/api";

View file

@ -1,7 +1,6 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
const schemas = {
query: z.object({

View file

@ -1,9 +1,8 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Notification, Timeline } from "@versia/kit/db";
import { Notifications, RolePermissions } from "@versia/kit/tables";
import { and, eq, gt, gte, inArray, lt, not, sql } from "drizzle-orm";
import { z } from "zod";
const schemas = {
query: z

View file

@ -1,7 +1,7 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { User } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { Account } from "~/classes/schemas/account";
const route = createRoute({
method: "delete",
@ -19,7 +19,7 @@ const route = createRoute({
description: "User",
content: {
"application/json": {
schema: User.schema,
schema: Account,
},
},
},

View file

@ -1,7 +1,7 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { User } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { Account } from "~/classes/schemas/account";
const route = createRoute({
method: "delete",
@ -19,7 +19,7 @@ const route = createRoute({
description: "User",
content: {
"application/json": {
schema: User.schema,
schema: Account,
},
},
},

View file

@ -1,8 +1,7 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Role } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { ErrorSchema } from "~/types/api";

View file

@ -1,8 +1,7 @@
import { apiRoute, auth, withNoteParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Note } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
import { ErrorSchema } from "~/types/api";
const route = createRoute({

View file

@ -1,8 +1,7 @@
import { apiRoute, auth, withNoteParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Note } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
const route = createRoute({
method: "post",

View file

@ -1,9 +1,9 @@
import { apiRoute, auth, withNoteParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { Timeline, User } from "@versia/kit/db";
import { createRoute, z } from "@hono/zod-openapi";
import { Timeline } from "@versia/kit/db";
import { RolePermissions, Users } from "@versia/kit/tables";
import { and, gt, gte, lt, sql } from "drizzle-orm";
import { z } from "zod";
import { Account } from "~/classes/schemas/account";
const schemas = {
query: z.object({
@ -40,7 +40,7 @@ const route = createRoute({
description: "Users who favourited a status",
content: {
"application/json": {
schema: z.array(User.schema),
schema: z.array(Account),
},
},
},

View file

@ -1,9 +1,8 @@
import { apiRoute, auth, jsonOrForm, withNoteParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Media, Note } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import ISO6391 from "iso-639-1";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { config } from "~/packages/config-manager/index.ts";
import { ErrorSchema } from "~/types/api";

View file

@ -1,9 +1,8 @@
import { apiRoute, auth, withNoteParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Note, db } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import type { SQL } from "drizzle-orm";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { ErrorSchema } from "~/types/api";

View file

@ -1,9 +1,8 @@
import { apiRoute, auth, jsonOrForm, withNoteParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Note } from "@versia/kit/db";
import { Notes, RolePermissions } from "@versia/kit/tables";
import { and, eq } from "drizzle-orm";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { ErrorSchema } from "~/types/api";

View file

@ -1,9 +1,9 @@
import { apiRoute, auth, withNoteParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { Timeline, User } from "@versia/kit/db";
import { createRoute, z } from "@hono/zod-openapi";
import { Timeline } from "@versia/kit/db";
import { RolePermissions, Users } from "@versia/kit/tables";
import { and, gt, gte, lt, sql } from "drizzle-orm";
import { z } from "zod";
import { Account } from "~/classes/schemas/account";
const schemas = {
param: z.object({
@ -40,7 +40,7 @@ const route = createRoute({
description: "Users who reblogged a status",
content: {
"application/json": {
schema: z.array(User.schema),
schema: z.array(Account),
},
},
},

View file

@ -1,8 +1,7 @@
import { apiRoute, auth, withNoteParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import type { StatusSource as ApiStatusSource } from "@versia/client/types";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
const route = createRoute({
method: "get",

View file

@ -1,8 +1,7 @@
import { apiRoute, auth, withNoteParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Note } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
const route = createRoute({
method: "post",

View file

@ -1,8 +1,7 @@
import { apiRoute, auth, withNoteParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Note } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { ErrorSchema } from "~/types/api";

View file

@ -1,9 +1,8 @@
import { apiRoute, auth, withNoteParam } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Note } from "@versia/kit/db";
import { Notes, RolePermissions } from "@versia/kit/tables";
import { and, eq } from "drizzle-orm";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { ErrorSchema } from "~/types/api";

View file

@ -1,9 +1,8 @@
import { apiRoute, auth, jsonOrForm } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Media, Note } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import ISO6391 from "iso-639-1";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { config } from "~/packages/config-manager/index.ts";
import { ErrorSchema } from "~/types/api";

View file

@ -1,9 +1,8 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Note, Timeline } from "@versia/kit/db";
import { Notes, RolePermissions } from "@versia/kit/tables";
import { and, eq, gt, gte, inArray, lt, or, sql } from "drizzle-orm";
import { z } from "zod";
const schemas = {
query: z.object({

View file

@ -1,9 +1,8 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Note, Timeline } from "@versia/kit/db";
import { Notes, RolePermissions } from "@versia/kit/tables";
import { and, eq, gt, gte, inArray, lt, or, sql } from "drizzle-orm";
import { z } from "zod";
const schemas = {
query: z.object({

View file

@ -1,9 +1,8 @@
import { apiRoute, auth, jsonOrForm } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { db } from "@versia/kit/db";
import { FilterKeywords, Filters, RolePermissions } from "@versia/kit/tables";
import { type SQL, and, eq, inArray } from "drizzle-orm";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { ErrorSchema } from "~/types/api";

View file

@ -1,9 +1,8 @@
import { apiRoute, auth, jsonOrForm } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { db } from "@versia/kit/db";
import { FilterKeywords, Filters, RolePermissions } from "@versia/kit/tables";
import type { SQL } from "drizzle-orm";
import { z } from "zod";
const schemas = {
json: z.object({

View file

@ -4,6 +4,7 @@ import { createRoute, z } from "@hono/zod-openapi";
import { User } from "@versia/kit/db";
import { Users } from "@versia/kit/tables";
import { and, eq, isNull } from "drizzle-orm";
import { Account } from "~/classes/schemas/account";
import manifest from "~/package.json";
import { config } from "~/packages/config-manager";
@ -83,7 +84,7 @@ const route = createRoute({
}),
contact: z.object({
email: z.string().nullable(),
account: User.schema.nullable(),
account: Account.nullable(),
}),
rules: z.array(
z.object({

View file

@ -1,8 +1,7 @@
import { apiRoute, auth } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Media } from "@versia/kit/db";
import { RolePermissions } from "@versia/kit/tables";
import { z } from "zod";
import { config } from "~/packages/config-manager/index.ts";
import { ErrorSchema } from "~/types/api";

View file

@ -1,10 +1,10 @@
import { apiRoute, auth, parseUserAddress, userAddressValidator } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { Note, User, db } from "@versia/kit/db";
import { Instances, Notes, RolePermissions, Users } from "@versia/kit/tables";
import { and, eq, inArray, isNull, sql } from "drizzle-orm";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { Account } from "~/classes/schemas/account";
import { searchManager } from "~/classes/search/search-manager";
import { config } from "~/packages/config-manager";
import { ErrorSchema } from "~/types/api";
@ -47,7 +47,7 @@ const route = createRoute({
content: {
"application/json": {
schema: z.object({
accounts: z.array(User.schema),
accounts: z.array(Account),
statuses: z.array(Note.schema),
hashtags: z.array(z.string()),
}),

View file

@ -1,7 +1,6 @@
import { apiRoute } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import type { Entity } from "@versia/federation/types";
import { z } from "zod";
import { InboxJobType, inboxQueue } from "~/classes/queues/inbox";
const schemas = {

View file

@ -1,6 +1,5 @@
import { apiRoute } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { z } from "zod";
import { createRoute, z } from "@hono/zod-openapi";
import { ApiError } from "~/classes/errors/api-error";
import { ErrorSchema } from "~/types/api";

View file

@ -1,7 +1,6 @@
import { apiRoute } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import type { ContentfulStatusCode, StatusCode } from "hono/utils/http-status";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { config } from "~/packages/config-manager";
import { ErrorSchema } from "~/types/api";

View file

@ -1,8 +1,7 @@
import { apiRoute } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { getLogger } from "@logtape/logtape";
import chalk from "chalk";
import { z } from "zod";
const route = createRoute({
method: "post",

View file

@ -1,5 +1,5 @@
import { apiRoute } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import {
LikeExtension as LikeSchema,
Note as NoteSchema,
@ -7,7 +7,6 @@ import {
import { Like, Note, User } from "@versia/kit/db";
import { Likes, Notes } from "@versia/kit/tables";
import { and, eq, inArray, sql } from "drizzle-orm";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { config } from "~/packages/config-manager";
import { ErrorSchema, type KnownEntity } from "~/types/api";

View file

@ -1,7 +1,6 @@
import { apiRoute } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import type { Entity } from "@versia/federation/types";
import { z } from "zod";
import { InboxJobType, inboxQueue } from "~/classes/queues/inbox";
import { ErrorSchema } from "~/types/api";

View file

@ -1,8 +1,7 @@
import { apiRoute } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { User as UserSchema } from "@versia/federation/schemas";
import { User } from "@versia/kit/db";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { ErrorSchema } from "~/types/api";

View file

@ -1,5 +1,5 @@
import { apiRoute } from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import {
Collection as CollectionSchema,
Note as NoteSchema,
@ -7,7 +7,6 @@ import {
import { Note, User, db } from "@versia/kit/db";
import { Notes } from "@versia/kit/tables";
import { and, eq, inArray } from "drizzle-orm";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { config } from "~/packages/config-manager";
import { ErrorSchema } from "~/types/api";

View file

@ -4,14 +4,13 @@ import {
parseUserAddress,
webfingerMention,
} from "@/api";
import { createRoute } from "@hono/zod-openapi";
import { createRoute, z } from "@hono/zod-openapi";
import { getLogger } from "@logtape/logtape";
import type { ResponseError } from "@versia/federation";
import { WebFinger } from "@versia/federation/schemas";
import { User } from "@versia/kit/db";
import { Users } from "@versia/kit/tables";
import { and, eq, isNull } from "drizzle-orm";
import { z } from "zod";
import { ApiError } from "~/classes/errors/api-error";
import { config } from "~/packages/config-manager";
import { ErrorSchema } from "~/types/api";