firefish/packages/backend/src/models/schema/note.ts
cutestnekoaqua 717aa899b1
feat: v1 Mastodon API
This commit adds (maybe unstable) support for Mastodons v1 api
also some v2 endpoints, maybe I miss stuff, I dont know.
We will need to test this but it should be kinda stable
and work like (old) butter.

Co-authored-by: Natty <natty.sh.git@gmail.com>
Co-authored-by: cutls <web-pro@cutls.com>
2023-02-09 23:21:50 +01:00

200 lines
3.1 KiB
TypeScript

export const packedNoteSchema = {
type: "object",
properties: {
id: {
type: "string",
optional: false,
nullable: false,
format: "id",
example: "xxxxxxxxxx",
},
createdAt: {
type: "string",
optional: false,
nullable: false,
format: "date-time",
},
text: {
type: "string",
optional: false,
nullable: true,
},
cw: {
type: "string",
optional: true,
nullable: true,
},
userId: {
type: "string",
optional: false,
nullable: false,
format: "id",
},
user: {
type: "object",
ref: "UserLite",
optional: false,
nullable: false,
},
replyId: {
type: "string",
optional: true,
nullable: true,
format: "id",
example: "xxxxxxxxxx",
},
renoteId: {
type: "string",
optional: true,
nullable: true,
format: "id",
example: "xxxxxxxxxx",
},
reply: {
type: "object",
optional: true,
nullable: true,
ref: "Note",
},
renote: {
type: "object",
optional: true,
nullable: true,
ref: "Note",
},
visibility: {
type: "string",
optional: false,
nullable: false,
},
mentions: {
type: "array",
optional: true,
nullable: false,
items: {
type: "string",
optional: false,
nullable: false,
format: "id",
},
},
visibleUserIds: {
type: "array",
optional: true,
nullable: false,
items: {
type: "string",
optional: false,
nullable: false,
format: "id",
},
},
fileIds: {
type: "array",
optional: true,
nullable: false,
items: {
type: "string",
optional: false,
nullable: false,
format: "id",
},
},
files: {
type: "array",
optional: true,
nullable: false,
items: {
type: "object",
optional: false,
nullable: false,
ref: "DriveFile",
},
},
tags: {
type: "array",
optional: true,
nullable: false,
items: {
type: "string",
optional: false,
nullable: false,
},
},
poll: {
type: "object",
optional: true,
nullable: true,
},
channelId: {
type: "string",
optional: true,
nullable: true,
format: "id",
example: "xxxxxxxxxx",
},
channel: {
type: "object",
optional: true,
nullable: true,
items: {
type: "object",
optional: false,
nullable: false,
properties: {
id: {
type: "string",
optional: false,
nullable: false,
},
name: {
type: "string",
optional: false,
nullable: true,
},
},
},
},
localOnly: {
type: "boolean",
optional: true,
nullable: false,
},
emojis: {
type: 'object',
optional: true, nullable: true,
},
reactions: {
type: "object",
optional: false,
nullable: false,
},
renoteCount: {
type: "number",
optional: false,
nullable: false,
},
repliesCount: {
type: "number",
optional: false,
nullable: false,
},
uri: {
type: "string",
optional: true,
nullable: false,
},
url: {
type: "string",
optional: true,
nullable: false,
},
myReaction: {
type: "object",
optional: true,
nullable: true,
},
},
} as const;