From c7643d65c557f17a870c5ae09791b21b9dbf5530 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?nicole=20miko=C5=82ajczyk?= Date: Sun, 4 Jan 2026 13:29:54 +0100 Subject: [PATCH] pl-api: update according to mastodon docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: nicole mikołajczyk --- packages/pl-api/lib/entities/admin/account.ts | 1 + packages/pl-api/lib/entities/featured-tag.ts | 2 +- packages/pl-api/lib/entities/index.ts | 2 ++ packages/pl-api/lib/entities/quote-approval.ts | 18 ++++++++++++++++++ packages/pl-api/lib/entities/relationship.ts | 1 + packages/pl-api/lib/entities/status.ts | 2 ++ packages/pl-api/lib/entities/translation.ts | 1 + 7 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 packages/pl-api/lib/entities/quote-approval.ts diff --git a/packages/pl-api/lib/entities/admin/account.ts b/packages/pl-api/lib/entities/admin/account.ts index caf4f233e..acff02537 100644 --- a/packages/pl-api/lib/entities/admin/account.ts +++ b/packages/pl-api/lib/entities/admin/account.ts @@ -58,6 +58,7 @@ const adminAccountSchema = v.pipe( disabled: v.fallback(v.boolean(), false), silenced: v.fallback(v.boolean(), false), suspended: v.fallback(v.boolean(), false), + sensitized: v.fallback(v.boolean(), false), account: v.fallback(v.nullable(accountSchema), null), created_by_application_id: v.fallback(v.optional(v.string()), undefined), invited_by_account_id: v.fallback(v.optional(v.string()), undefined), diff --git a/packages/pl-api/lib/entities/featured-tag.ts b/packages/pl-api/lib/entities/featured-tag.ts index 14f9730e8..bf3d534cd 100644 --- a/packages/pl-api/lib/entities/featured-tag.ts +++ b/packages/pl-api/lib/entities/featured-tag.ts @@ -9,7 +9,7 @@ const featuredTagSchema = v.object({ name: v.string(), url: v.fallback(v.optional(v.string()), undefined), statuses_count: v.number(), - last_status_at: v.number(), + last_status_at: v.fallback(v.nullable(v.number()), null), }); /** diff --git a/packages/pl-api/lib/entities/index.ts b/packages/pl-api/lib/entities/index.ts index 37fec1e81..97948d695 100644 --- a/packages/pl-api/lib/entities/index.ts +++ b/packages/pl-api/lib/entities/index.ts @@ -66,6 +66,8 @@ export * from './poll'; export * from './preview-card'; export * from './preview-card-author'; export * from './privacy-policy'; +export * from './quote'; +export * from './quote-approval'; export * from './relationship'; export * from './relationship-severance-event'; export * from './report'; diff --git a/packages/pl-api/lib/entities/quote-approval.ts b/packages/pl-api/lib/entities/quote-approval.ts new file mode 100644 index 000000000..51eb508c1 --- /dev/null +++ b/packages/pl-api/lib/entities/quote-approval.ts @@ -0,0 +1,18 @@ +import * as v from 'valibot'; + +/** + * @category Schemas + * @see {@link https://docs.joinmastodon.org/entities/QuoteApproval/} + */ +const quoteApprovalSchema = v.object({ + automatic: v.array(v.picklist(['public', 'followers', 'following', 'unsupported_policy'])), + manual: v.array(v.picklist(['public', 'followers', 'following', 'unsupported_policy'])), + current_user: v.picklist(['automatic', 'manual', 'denied', 'unknown']), +}); + +/** + * @category Entity types + */ +type QuoteApproval = v.InferOutput; + +export { quoteApprovalSchema, type QuoteApproval }; diff --git a/packages/pl-api/lib/entities/relationship.ts b/packages/pl-api/lib/entities/relationship.ts index 31291f424..b024f9ffa 100644 --- a/packages/pl-api/lib/entities/relationship.ts +++ b/packages/pl-api/lib/entities/relationship.ts @@ -18,6 +18,7 @@ const relationshipSchema = v.object({ notifying: v.fallback(v.boolean(), false), requested: v.fallback(v.boolean(), false), showing_reblogs: v.fallback(v.boolean(), false), + languages: v.fallback(v.nullable(v.array(v.string())), null), }); /** diff --git a/packages/pl-api/lib/entities/status.ts b/packages/pl-api/lib/entities/status.ts index 071b223a4..4c5d38078 100644 --- a/packages/pl-api/lib/entities/status.ts +++ b/packages/pl-api/lib/entities/status.ts @@ -12,6 +12,7 @@ import { mentionSchema } from './mention'; import { pollSchema } from './poll'; import { previewCardSchema } from './preview-card'; import { type Quote, quoteSchema, type ShallowQuote, shallowQuoteSchema } from './quote'; +import { quoteApprovalSchema } from './quote-approval'; import { rssFeedSchema } from './rss-feed'; import { tagSchema } from './tag'; import { translationSchema } from './translation'; @@ -78,6 +79,7 @@ const baseStatusSchema = v.object({ approval_status: v.fallback(v.nullable(v.picklist(['pending', 'approval', 'rejected'])), null), group: v.fallback(v.nullable(groupSchema), null), scheduled_at: v.fallback(v.null(), null), + quote_approval: v.fallback(v.nullable(quoteApprovalSchema), null), quote_id: v.fallback(v.nullable(v.string()), null), local: v.fallback(v.optional(v.boolean()), undefined), diff --git a/packages/pl-api/lib/entities/translation.ts b/packages/pl-api/lib/entities/translation.ts index 69a70796e..08945bf36 100644 --- a/packages/pl-api/lib/entities/translation.ts +++ b/packages/pl-api/lib/entities/translation.ts @@ -36,6 +36,7 @@ const translationSchema = v.pipe( id: v.fallback(v.nullable(v.string()), null), content: v.fallback(v.string(), ''), spoiler_text: v.fallback(v.string(), ''), + language: v.fallback(v.string(), ''), poll: v.fallback(v.optional(translationPollSchema), undefined), media_attachments: filteredArray(translationMediaAttachment), detected_source_language: v.string(),