From 2dd561f8ee383e2389a621749b00a829f32631a8 Mon Sep 17 00:00:00 2001 From: zoranmiladinoski Date: Wed, 28 Jan 2026 15:59:33 +0100 Subject: [PATCH 1/3] new endpoint for restoring soft deleted activities --- src/gen/feeds/FeedsApi.ts | 50 ++++++++++++++++++------------ src/gen/model-decoders/decoders.ts | 20 ++++++++++++ src/gen/models/index.ts | 43 ++++++++++++++++++------- 3 files changed, 81 insertions(+), 32 deletions(-) diff --git a/src/gen/feeds/FeedsApi.ts b/src/gen/feeds/FeedsApi.ts index 6a49fd1..88ea7c0 100644 --- a/src/gen/feeds/FeedsApi.ts +++ b/src/gen/feeds/FeedsApi.ts @@ -101,6 +101,8 @@ import { RejectFollowRequest, RejectFollowResponse, Response, + RestoreActivityRequest, + RestoreActivityResponse, SingleFollowResponse, UnfollowBatchRequest, UnfollowBatchResponse, @@ -214,7 +216,6 @@ export class FeedsApi { ): Promise> { const body = { ids: request?.ids, - delete_notification_activity: request?.delete_notification_activity, hard_delete: request?.hard_delete, user_id: request?.user_id, user: request?.user, @@ -507,11 +508,9 @@ export class FeedsApi { async deleteActivityReaction(request: { activity_id: string; type: string; - delete_notification_activity?: boolean; user_id?: string; }): Promise> { const queryParams = { - delete_notification_activity: request?.delete_notification_activity, user_id: request?.user_id, }; const pathParams = { @@ -536,11 +535,9 @@ export class FeedsApi { async deleteActivity(request: { id: string; hard_delete?: boolean; - delete_notification_activity?: boolean; }): Promise> { const queryParams = { hard_delete: request?.hard_delete, - delete_notification_activity: request?.delete_notification_activity, }; const pathParams = { id: request?.id, @@ -578,7 +575,6 @@ export class FeedsApi { id: request?.id, }; const body = { - handle_mention_notifications: request?.handle_mention_notifications, user_id: request?.user_id, unset: request?.unset, set: request?.set, @@ -609,7 +605,6 @@ export class FeedsApi { }; const body = { expires_at: request?.expires_at, - handle_mention_notifications: request?.handle_mention_notifications, poll_id: request?.poll_id, restrict_replies: request?.restrict_replies, skip_enrich_url: request?.skip_enrich_url, @@ -644,6 +639,33 @@ export class FeedsApi { return { ...response.body, metadata: response.metadata }; } + async restoreActivity( + request: RestoreActivityRequest & { id: string }, + ): Promise> { + const pathParams = { + id: request?.id, + }; + const body = { + user_id: request?.user_id, + user: request?.user, + }; + + const response = await this.apiClient.sendRequest< + StreamResponse + >( + 'PUT', + '/api/v2/feeds/activities/{id}/restore', + pathParams, + undefined, + body, + 'application/json', + ); + + decoders.RestoreActivityResponse?.(response.body); + + return { ...response.body, metadata: response.metadata }; + } + async queryBookmarkFolders( request?: QueryBookmarkFoldersRequest, ): Promise> { @@ -975,11 +997,9 @@ export class FeedsApi { async deleteComment(request: { id: string; hard_delete?: boolean; - delete_notification_activity?: boolean; }): Promise> { const queryParams = { hard_delete: request?.hard_delete, - delete_notification_activity: request?.delete_notification_activity, }; const pathParams = { id: request?.id, @@ -1018,12 +1038,10 @@ export class FeedsApi { }; const body = { comment: request?.comment, - handle_mention_notifications: request?.handle_mention_notifications, skip_enrich_url: request?.skip_enrich_url, skip_push: request?.skip_push, user_id: request?.user_id, attachments: request?.attachments, - mentioned_user_ids: request?.mentioned_user_ids, custom: request?.custom, user: request?.user, }; @@ -1109,11 +1127,9 @@ export class FeedsApi { async deleteCommentReaction(request: { id: string; type: string; - delete_notification_activity?: boolean; user_id?: string; }): Promise> { const queryParams = { - delete_notification_activity: request?.delete_notification_activity, user_id: request?.user_id, }; const pathParams = { @@ -2161,11 +2177,7 @@ export class FeedsApi { async unfollow(request: { source: string; target: string; - delete_notification_activity?: boolean; }): Promise> { - const queryParams = { - delete_notification_activity: request?.delete_notification_activity, - }; const pathParams = { source: request?.source, target: request?.target, @@ -2177,7 +2189,7 @@ export class FeedsApi { 'DELETE', '/api/v2/feeds/follows/{source}/{target}', pathParams, - queryParams, + undefined, ); decoders.UnfollowResponse?.(response.body); @@ -2318,7 +2330,6 @@ export class FeedsApi { ): Promise> { const body = { follows: request?.follows, - delete_notification_activity: request?.delete_notification_activity, }; const response = await this.apiClient.sendRequest< @@ -2342,7 +2353,6 @@ export class FeedsApi { ): Promise> { const body = { follows: request?.follows, - delete_notification_activity: request?.delete_notification_activity, }; const response = await this.apiClient.sendRequest< diff --git a/src/gen/model-decoders/decoders.ts b/src/gen/model-decoders/decoders.ts index 576cc97..3766a07 100644 --- a/src/gen/model-decoders/decoders.ts +++ b/src/gen/model-decoders/decoders.ts @@ -237,6 +237,19 @@ decoders.ActivityResponse = (input?: Record) => { return decode(typeMappings, input); }; +decoders.ActivityRestoredEvent = (input?: Record) => { + const typeMappings: TypeMapping = { + created_at: { type: 'DatetimeType', isSingle: true }, + + activity: { type: 'ActivityResponse', isSingle: true }, + + received_at: { type: 'DatetimeType', isSingle: true }, + + user: { type: 'UserResponseCommonFields', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders.ActivitySelectorConfigResponse = (input?: Record) => { const typeMappings: TypeMapping = { cutoff_time: { type: 'DatetimeType', isSingle: true }, @@ -4058,6 +4071,13 @@ decoders.ResolveSipInboundResponse = (input?: Record) => { return decode(typeMappings, input); }; +decoders.RestoreActivityResponse = (input?: Record) => { + const typeMappings: TypeMapping = { + activity: { type: 'ActivityResponse', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders.ReviewQueueItemNewEvent = (input?: Record) => { const typeMappings: TypeMapping = { created_at: { type: 'DatetimeType', isSingle: true }, diff --git a/src/gen/models/index.ts b/src/gen/models/index.ts index 49fe857..abf4848 100644 --- a/src/gen/models/index.ts +++ b/src/gen/models/index.ts @@ -618,6 +618,24 @@ export interface ActivityResponse { poll?: PollResponseData; } +export interface ActivityRestoredEvent { + created_at: Date; + + fid: string; + + activity: ActivityResponse; + + custom: Record; + + type: string; + + feed_visibility?: string; + + received_at?: Date; + + user?: UserResponseCommonFields; +} + export interface ActivitySelectorConfig { type: | 'popular' @@ -4861,8 +4879,6 @@ export interface DecayFunctionConfig { export interface DeleteActivitiesRequest { ids: string[]; - delete_notification_activity?: boolean; - hard_delete?: boolean; user_id?: string; @@ -11518,6 +11534,18 @@ export interface RestoreActionRequest { decision_reason?: string; } +export interface RestoreActivityRequest { + user_id?: string; + + user?: UserRequest; +} + +export interface RestoreActivityResponse { + duration: string; + + activity: ActivityResponse; +} + export interface RestoreUsersRequest { user_ids: string[]; } @@ -13283,8 +13311,6 @@ export interface UnblockedUserEvent { export interface UnfollowBatchRequest { follows: FollowPair[]; - - delete_notification_activity?: boolean; } export interface UnfollowBatchResponse { @@ -13394,8 +13420,6 @@ export interface UnreadCountsThread { } export interface UpdateActivityPartialRequest { - handle_mention_notifications?: boolean; - user_id?: string; unset?: string[]; @@ -13414,8 +13438,6 @@ export interface UpdateActivityPartialResponse { export interface UpdateActivityRequest { expires_at?: Date; - handle_mention_notifications?: boolean; - poll_id?: string; restrict_replies?: 'everyone' | 'people_i_follow' | 'nobody'; @@ -13910,8 +13932,6 @@ export interface UpdateCommandResponse { export interface UpdateCommentRequest { comment?: string; - handle_mention_notifications?: boolean; - skip_enrich_url?: boolean; skip_push?: boolean; @@ -13920,8 +13940,6 @@ export interface UpdateCommentRequest { attachments?: Attachment[]; - mentioned_user_ids?: string[]; - custom?: Record; user?: UserRequest; @@ -15241,6 +15259,7 @@ export type WebhookEvent = | ({ type: 'feeds.activity.removed_from_feed'; } & ActivityRemovedFromFeedEvent) + | ({ type: 'feeds.activity.restored' } & ActivityRestoredEvent) | ({ type: 'feeds.activity.unpinned' } & ActivityUnpinnedEvent) | ({ type: 'feeds.activity.updated' } & ActivityUpdatedEvent) | ({ type: 'feeds.bookmark.added' } & BookmarkAddedEvent) From d2a7f99aa702e50f47658477e1610a5b986b0945 Mon Sep 17 00:00:00 2001 From: zoranmiladinoski Date: Thu, 29 Jan 2026 10:00:49 +0100 Subject: [PATCH 2/3] re-generate --- src/gen/feeds/FeedsApi.ts | 23 ++++++++++++++++++++++- src/gen/models/index.ts | 18 +++++++++++++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/gen/feeds/FeedsApi.ts b/src/gen/feeds/FeedsApi.ts index 88ea7c0..761741b 100644 --- a/src/gen/feeds/FeedsApi.ts +++ b/src/gen/feeds/FeedsApi.ts @@ -216,6 +216,7 @@ export class FeedsApi { ): Promise> { const body = { ids: request?.ids, + delete_notification_activity: request?.delete_notification_activity, hard_delete: request?.hard_delete, user_id: request?.user_id, user: request?.user, @@ -508,9 +509,11 @@ export class FeedsApi { async deleteActivityReaction(request: { activity_id: string; type: string; + delete_notification_activity?: boolean; user_id?: string; }): Promise> { const queryParams = { + delete_notification_activity: request?.delete_notification_activity, user_id: request?.user_id, }; const pathParams = { @@ -535,9 +538,11 @@ export class FeedsApi { async deleteActivity(request: { id: string; hard_delete?: boolean; + delete_notification_activity?: boolean; }): Promise> { const queryParams = { hard_delete: request?.hard_delete, + delete_notification_activity: request?.delete_notification_activity, }; const pathParams = { id: request?.id, @@ -575,6 +580,7 @@ export class FeedsApi { id: request?.id, }; const body = { + handle_mention_notifications: request?.handle_mention_notifications, user_id: request?.user_id, unset: request?.unset, set: request?.set, @@ -605,6 +611,7 @@ export class FeedsApi { }; const body = { expires_at: request?.expires_at, + handle_mention_notifications: request?.handle_mention_notifications, poll_id: request?.poll_id, restrict_replies: request?.restrict_replies, skip_enrich_url: request?.skip_enrich_url, @@ -997,9 +1004,11 @@ export class FeedsApi { async deleteComment(request: { id: string; hard_delete?: boolean; + delete_notification_activity?: boolean; }): Promise> { const queryParams = { hard_delete: request?.hard_delete, + delete_notification_activity: request?.delete_notification_activity, }; const pathParams = { id: request?.id, @@ -1038,10 +1047,12 @@ export class FeedsApi { }; const body = { comment: request?.comment, + handle_mention_notifications: request?.handle_mention_notifications, skip_enrich_url: request?.skip_enrich_url, skip_push: request?.skip_push, user_id: request?.user_id, attachments: request?.attachments, + mentioned_user_ids: request?.mentioned_user_ids, custom: request?.custom, user: request?.user, }; @@ -1127,9 +1138,11 @@ export class FeedsApi { async deleteCommentReaction(request: { id: string; type: string; + delete_notification_activity?: boolean; user_id?: string; }): Promise> { const queryParams = { + delete_notification_activity: request?.delete_notification_activity, user_id: request?.user_id, }; const pathParams = { @@ -2005,6 +2018,7 @@ export class FeedsApi { follower_role: request?.follower_role, push_preference: request?.push_preference, skip_push: request?.skip_push, + status: request?.status, custom: request?.custom, }; @@ -2033,6 +2047,7 @@ export class FeedsApi { create_notification_activity: request?.create_notification_activity, push_preference: request?.push_preference, skip_push: request?.skip_push, + status: request?.status, custom: request?.custom, }; @@ -2177,7 +2192,11 @@ export class FeedsApi { async unfollow(request: { source: string; target: string; + delete_notification_activity?: boolean; }): Promise> { + const queryParams = { + delete_notification_activity: request?.delete_notification_activity, + }; const pathParams = { source: request?.source, target: request?.target, @@ -2189,7 +2208,7 @@ export class FeedsApi { 'DELETE', '/api/v2/feeds/follows/{source}/{target}', pathParams, - undefined, + queryParams, ); decoders.UnfollowResponse?.(response.body); @@ -2330,6 +2349,7 @@ export class FeedsApi { ): Promise> { const body = { follows: request?.follows, + delete_notification_activity: request?.delete_notification_activity, }; const response = await this.apiClient.sendRequest< @@ -2353,6 +2373,7 @@ export class FeedsApi { ): Promise> { const body = { follows: request?.follows, + delete_notification_activity: request?.delete_notification_activity, }; const response = await this.apiClient.sendRequest< diff --git a/src/gen/models/index.ts b/src/gen/models/index.ts index abf4848..dd77e1a 100644 --- a/src/gen/models/index.ts +++ b/src/gen/models/index.ts @@ -4879,6 +4879,8 @@ export interface DecayFunctionConfig { export interface DeleteActivitiesRequest { ids: string[]; + delete_notification_activity?: boolean; + hard_delete?: boolean; user_id?: string; @@ -6355,6 +6357,8 @@ export interface FollowRequest { skip_push?: boolean; + status?: 'accepted' | 'pending' | 'rejected'; + custom?: Record; } @@ -11097,7 +11101,7 @@ export interface RTMPSettingsResponse { } export interface RankingConfig { - type: 'recency' | 'expression' | 'interest'; + type: 'expression' | 'interest'; score?: string; @@ -13311,6 +13315,8 @@ export interface UnblockedUserEvent { export interface UnfollowBatchRequest { follows: FollowPair[]; + + delete_notification_activity?: boolean; } export interface UnfollowBatchResponse { @@ -13420,6 +13426,8 @@ export interface UnreadCountsThread { } export interface UpdateActivityPartialRequest { + handle_mention_notifications?: boolean; + user_id?: string; unset?: string[]; @@ -13438,6 +13446,8 @@ export interface UpdateActivityPartialResponse { export interface UpdateActivityRequest { expires_at?: Date; + handle_mention_notifications?: boolean; + poll_id?: string; restrict_replies?: 'everyone' | 'people_i_follow' | 'nobody'; @@ -13932,6 +13942,8 @@ export interface UpdateCommandResponse { export interface UpdateCommentRequest { comment?: string; + handle_mention_notifications?: boolean; + skip_enrich_url?: boolean; skip_push?: boolean; @@ -13940,6 +13952,8 @@ export interface UpdateCommentRequest { attachments?: Attachment[]; + mentioned_user_ids?: string[]; + custom?: Record; user?: UserRequest; @@ -14085,6 +14099,8 @@ export interface UpdateFollowRequest { skip_push?: boolean; + status?: 'accepted' | 'pending' | 'rejected'; + custom?: Record; } From d8cc6a351e8ce2d3ae0168178250796a076a1b1d Mon Sep 17 00:00:00 2001 From: zoranmiladinoski Date: Thu, 29 Jan 2026 15:48:46 +0100 Subject: [PATCH 3/3] change http method for restore soft deleted activity --- src/gen/feeds/FeedsApi.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gen/feeds/FeedsApi.ts b/src/gen/feeds/FeedsApi.ts index 761741b..82c2a9b 100644 --- a/src/gen/feeds/FeedsApi.ts +++ b/src/gen/feeds/FeedsApi.ts @@ -660,7 +660,7 @@ export class FeedsApi { const response = await this.apiClient.sendRequest< StreamResponse >( - 'PUT', + 'POST', '/api/v2/feeds/activities/{id}/restore', pathParams, undefined,