mirror of
https://github.com/versia-pub/server.git
synced 2026-03-13 05:49:16 +01:00
feat(api): 🏷️ Port Status OpenAPI schemas from Mastodon API docs
This commit is contained in:
parent
2aeada4904
commit
7c622730dc
26 changed files with 920 additions and 148 deletions
|
|
@ -1,8 +1,9 @@
|
|||
import { apiRoute, auth, withUserParam } from "@/api";
|
||||
import { createRoute, z } from "@hono/zod-openapi";
|
||||
import { Note, Timeline } from "@versia/kit/db";
|
||||
import { 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 { Status } from "~/classes/schemas/status";
|
||||
|
||||
const schemas = {
|
||||
param: z.object({
|
||||
|
|
@ -61,7 +62,7 @@ const route = createRoute({
|
|||
description: "A list of statuses by the specified account",
|
||||
content: {
|
||||
"application/json": {
|
||||
schema: z.array(Note.schema),
|
||||
schema: z.array(Status),
|
||||
},
|
||||
},
|
||||
headers: {
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import { createRoute } from "@hono/zod-openapi";
|
|||
import { Application } from "@versia/kit/db";
|
||||
import { RolePermissions } from "@versia/kit/tables";
|
||||
import { ApiError } from "~/classes/errors/api-error";
|
||||
import { Application as ApplicationSchema } from "~/classes/schemas/application";
|
||||
import { ErrorSchema } from "~/types/api";
|
||||
|
||||
const route = createRoute({
|
||||
|
|
@ -21,7 +22,7 @@ const route = createRoute({
|
|||
description: "Application",
|
||||
content: {
|
||||
"application/json": {
|
||||
schema: Application.schema,
|
||||
schema: ApplicationSchema,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
@ -52,13 +53,6 @@ export default apiRoute((app) =>
|
|||
throw new ApiError(401, "Application not found");
|
||||
}
|
||||
|
||||
return context.json(
|
||||
{
|
||||
...application.toApi(),
|
||||
redirect_uris: application.data.redirectUri,
|
||||
scopes: application.data.scopes,
|
||||
},
|
||||
200,
|
||||
);
|
||||
return context.json(application.toApi(), 200);
|
||||
}),
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
import { apiRoute, auth } from "@/api";
|
||||
import { createRoute, z } from "@hono/zod-openapi";
|
||||
import { Note, Timeline } from "@versia/kit/db";
|
||||
import { Timeline } from "@versia/kit/db";
|
||||
import { Notes, RolePermissions } from "@versia/kit/tables";
|
||||
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
||||
import { Status } from "~/classes/schemas/status";
|
||||
|
||||
const schemas = {
|
||||
query: z.object({
|
||||
|
|
@ -31,7 +32,7 @@ const route = createRoute({
|
|||
description: "Favourites",
|
||||
content: {
|
||||
"application/json": {
|
||||
schema: z.array(Note.schema),
|
||||
schema: z.array(Status),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { apiRoute, auth, withNoteParam } from "@/api";
|
||||
import { createRoute, z } from "@hono/zod-openapi";
|
||||
import { Note } from "@versia/kit/db";
|
||||
import { RolePermissions } from "@versia/kit/tables";
|
||||
import { Status } from "~/classes/schemas/status";
|
||||
import { ErrorSchema } from "~/types/api";
|
||||
|
||||
const route = createRoute({
|
||||
|
|
@ -26,8 +26,8 @@ const route = createRoute({
|
|||
content: {
|
||||
"application/json": {
|
||||
schema: z.object({
|
||||
ancestors: z.array(Note.schema),
|
||||
descendants: z.array(Note.schema),
|
||||
ancestors: z.array(Status),
|
||||
descendants: z.array(Status),
|
||||
}),
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { apiRoute, auth, withNoteParam } from "@/api";
|
||||
import { createRoute, z } from "@hono/zod-openapi";
|
||||
import { Note } from "@versia/kit/db";
|
||||
import { RolePermissions } from "@versia/kit/tables";
|
||||
import { Status } from "~/classes/schemas/status";
|
||||
|
||||
const route = createRoute({
|
||||
method: "post",
|
||||
|
|
@ -27,7 +27,7 @@ const route = createRoute({
|
|||
description: "Favourited status",
|
||||
content: {
|
||||
"application/json": {
|
||||
schema: Note.schema,
|
||||
schema: Status,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
import { apiRoute, auth, jsonOrForm, withNoteParam } from "@/api";
|
||||
import { createRoute, z } from "@hono/zod-openapi";
|
||||
import { Media, Note } from "@versia/kit/db";
|
||||
import { Media } from "@versia/kit/db";
|
||||
import { RolePermissions } from "@versia/kit/tables";
|
||||
import ISO6391 from "iso-639-1";
|
||||
import { ApiError } from "~/classes/errors/api-error";
|
||||
import { Status } from "~/classes/schemas/status";
|
||||
import { config } from "~/packages/config-manager/index.ts";
|
||||
import { ErrorSchema } from "~/types/api";
|
||||
|
||||
|
|
@ -84,7 +85,7 @@ const routeGet = createRoute({
|
|||
description: "Status",
|
||||
content: {
|
||||
"application/json": {
|
||||
schema: Note.schema,
|
||||
schema: Status,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
@ -121,7 +122,7 @@ const routeDelete = createRoute({
|
|||
description: "Deleted status",
|
||||
content: {
|
||||
"application/json": {
|
||||
schema: Note.schema,
|
||||
schema: Status,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
@ -180,7 +181,7 @@ const routePut = createRoute({
|
|||
description: "Updated status",
|
||||
content: {
|
||||
"application/json": {
|
||||
schema: Note.schema,
|
||||
schema: Status,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
import { apiRoute, auth, withNoteParam } from "@/api";
|
||||
import { createRoute, z } from "@hono/zod-openapi";
|
||||
import { Note, db } from "@versia/kit/db";
|
||||
import { db } from "@versia/kit/db";
|
||||
import { RolePermissions } from "@versia/kit/tables";
|
||||
import type { SQL } from "drizzle-orm";
|
||||
import { ApiError } from "~/classes/errors/api-error";
|
||||
import { Status } from "~/classes/schemas/status";
|
||||
import { ErrorSchema } from "~/types/api";
|
||||
|
||||
const route = createRoute({
|
||||
|
|
@ -30,7 +31,7 @@ const route = createRoute({
|
|||
description: "Pinned status",
|
||||
content: {
|
||||
"application/json": {
|
||||
schema: Note.schema,
|
||||
schema: Status,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import { Note } from "@versia/kit/db";
|
|||
import { Notes, RolePermissions } from "@versia/kit/tables";
|
||||
import { and, eq } from "drizzle-orm";
|
||||
import { ApiError } from "~/classes/errors/api-error";
|
||||
import { Status } from "~/classes/schemas/status";
|
||||
import { ErrorSchema } from "~/types/api";
|
||||
|
||||
const schemas = {
|
||||
|
|
@ -51,7 +52,7 @@ const route = createRoute({
|
|||
description: "Reblogged status",
|
||||
content: {
|
||||
"application/json": {
|
||||
schema: Note.schema,
|
||||
schema: Status,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { apiRoute, auth, withNoteParam } from "@/api";
|
||||
import { createRoute, z } from "@hono/zod-openapi";
|
||||
import { Note } from "@versia/kit/db";
|
||||
import { RolePermissions } from "@versia/kit/tables";
|
||||
import { Status } from "~/classes/schemas/status";
|
||||
|
||||
const route = createRoute({
|
||||
method: "post",
|
||||
|
|
@ -27,7 +27,7 @@ const route = createRoute({
|
|||
description: "Unfavourited status",
|
||||
content: {
|
||||
"application/json": {
|
||||
schema: Note.schema,
|
||||
schema: Status,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import { apiRoute, auth, withNoteParam } from "@/api";
|
||||
import { createRoute, z } from "@hono/zod-openapi";
|
||||
import { Note } from "@versia/kit/db";
|
||||
import { RolePermissions } from "@versia/kit/tables";
|
||||
import { ApiError } from "~/classes/errors/api-error";
|
||||
import { Status } from "~/classes/schemas/status";
|
||||
import { ErrorSchema } from "~/types/api";
|
||||
|
||||
const route = createRoute({
|
||||
|
|
@ -29,7 +29,7 @@ const route = createRoute({
|
|||
description: "Unpinned status",
|
||||
content: {
|
||||
"application/json": {
|
||||
schema: Note.schema,
|
||||
schema: Status,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import { Note } from "@versia/kit/db";
|
|||
import { Notes, RolePermissions } from "@versia/kit/tables";
|
||||
import { and, eq } from "drizzle-orm";
|
||||
import { ApiError } from "~/classes/errors/api-error";
|
||||
import { Status } from "~/classes/schemas/status";
|
||||
import { ErrorSchema } from "~/types/api";
|
||||
|
||||
const route = createRoute({
|
||||
|
|
@ -30,7 +31,7 @@ const route = createRoute({
|
|||
description: "Unreblogged status",
|
||||
content: {
|
||||
"application/json": {
|
||||
schema: Note.schema,
|
||||
schema: Status,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import { Media, Note } from "@versia/kit/db";
|
|||
import { RolePermissions } from "@versia/kit/tables";
|
||||
import ISO6391 from "iso-639-1";
|
||||
import { ApiError } from "~/classes/errors/api-error";
|
||||
import { Status } from "~/classes/schemas/status";
|
||||
import { config } from "~/packages/config-manager/index.ts";
|
||||
import { ErrorSchema } from "~/types/api";
|
||||
|
||||
|
|
@ -116,7 +117,7 @@ const route = createRoute({
|
|||
description: "The new status",
|
||||
content: {
|
||||
"application/json": {
|
||||
schema: Note.schema,
|
||||
schema: Status,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
import { apiRoute, auth } from "@/api";
|
||||
import { createRoute, z } from "@hono/zod-openapi";
|
||||
import { Note, Timeline } from "@versia/kit/db";
|
||||
import { 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 { Status } from "~/classes/schemas/status";
|
||||
|
||||
const schemas = {
|
||||
query: z.object({
|
||||
|
|
@ -36,7 +37,7 @@ const route = createRoute({
|
|||
description: "Home timeline",
|
||||
content: {
|
||||
"application/json": {
|
||||
schema: z.array(Note.schema),
|
||||
schema: z.array(Status),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
import { apiRoute, auth } from "@/api";
|
||||
import { createRoute, z } from "@hono/zod-openapi";
|
||||
import { Note, Timeline } from "@versia/kit/db";
|
||||
import { 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 { Status } from "~/classes/schemas/status";
|
||||
|
||||
const schemas = {
|
||||
query: z.object({
|
||||
|
|
@ -47,7 +48,7 @@ const route = createRoute({
|
|||
description: "Public timeline",
|
||||
content: {
|
||||
"application/json": {
|
||||
schema: z.array(Note.schema),
|
||||
schema: z.array(Status),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import { Instances, Notes, RolePermissions, Users } from "@versia/kit/tables";
|
|||
import { and, eq, inArray, isNull, sql } from "drizzle-orm";
|
||||
import { ApiError } from "~/classes/errors/api-error";
|
||||
import { Account } from "~/classes/schemas/account";
|
||||
import { Status } from "~/classes/schemas/status";
|
||||
import { searchManager } from "~/classes/search/search-manager";
|
||||
import { config } from "~/packages/config-manager";
|
||||
import { ErrorSchema } from "~/types/api";
|
||||
|
|
@ -48,7 +49,7 @@ const route = createRoute({
|
|||
"application/json": {
|
||||
schema: z.object({
|
||||
accounts: z.array(Account),
|
||||
statuses: z.array(Note.schema),
|
||||
statuses: z.array(Status),
|
||||
hashtags: z.array(z.string()),
|
||||
}),
|
||||
},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue