From bbd8333b868527a90e0c6a056be89c2d8d830175 Mon Sep 17 00:00:00 2001 From: Jimmy Pettersson Date: Fri, 31 Oct 2025 09:33:50 +0100 Subject: [PATCH] Feeds collections --- src/gen/feeds/FeedsApi.ts | 117 +++++++++++++++++++++++++++++ src/gen/model-decoders/decoders.ts | 48 ++++++++++++ src/gen/models/index.ts | 104 +++++++++++++++++++++++++ 3 files changed, 269 insertions(+) diff --git a/src/gen/feeds/FeedsApi.ts b/src/gen/feeds/FeedsApi.ts index 8279783..1aa6053 100644 --- a/src/gen/feeds/FeedsApi.ts +++ b/src/gen/feeds/FeedsApi.ts @@ -19,6 +19,8 @@ import { AddReactionRequest, AddReactionResponse, CastPollVoteRequest, + CreateCollectionsRequest, + CreateCollectionsResponse, CreateFeedGroupRequest, CreateFeedGroupResponse, CreateFeedViewRequest, @@ -33,6 +35,7 @@ import { DeleteActivityResponse, DeleteBookmarkFolderResponse, DeleteBookmarkResponse, + DeleteCollectionsResponse, DeleteCommentReactionResponse, DeleteCommentResponse, DeleteFeedGroupResponse, @@ -89,6 +92,7 @@ import { QueryFollowsResponse, QueryMembershipLevelsRequest, QueryMembershipLevelsResponse, + ReadCollectionsResponse, RejectFeedMemberInviteRequest, RejectFeedMemberInviteResponse, RejectFollowRequest, @@ -107,6 +111,8 @@ import { UpdateBookmarkFolderResponse, UpdateBookmarkRequest, UpdateBookmarkResponse, + UpdateCollectionsRequest, + UpdateCollectionsResponse, UpdateCommentRequest, UpdateCommentResponse, UpdateFeedGroupRequest, @@ -125,6 +131,8 @@ import { UpdateMembershipLevelResponse, UpsertActivitiesRequest, UpsertActivitiesResponse, + UpsertCollectionsRequest, + UpsertCollectionsResponse, } from '../models'; import { decoders } from '../model-decoders/decoders'; @@ -146,6 +154,7 @@ export class FeedsApi { visibility: request?.visibility, visibility_tag: request?.visibility_tag, attachments: request?.attachments, + collection_refs: request?.collection_refs, filter_tags: request?.filter_tags, interest_tags: request?.interest_tags, mentioned_user_ids: request?.mentioned_user_ids, @@ -592,6 +601,7 @@ export class FeedsApi { user_id: request?.user_id, visibility: request?.visibility, attachments: request?.attachments, + collection_refs: request?.collection_refs, feeds: request?.feeds, filter_tags: request?.filter_tags, interest_tags: request?.interest_tags, @@ -720,6 +730,113 @@ export class FeedsApi { return { ...response.body, metadata: response.metadata }; } + async deleteCollections(request: { + collection_refs: string[]; + }): Promise> { + const queryParams = { + collection_refs: request?.collection_refs, + }; + + const response = await this.apiClient.sendRequest< + StreamResponse + >('DELETE', '/api/v2/feeds/collections', undefined, queryParams); + + decoders.DeleteCollectionsResponse?.(response.body); + + return { ...response.body, metadata: response.metadata }; + } + + async readCollections(request: { + collection_refs: string[]; + user_id?: string; + }): Promise> { + const queryParams = { + collection_refs: request?.collection_refs, + user_id: request?.user_id, + }; + + const response = await this.apiClient.sendRequest< + StreamResponse + >('GET', '/api/v2/feeds/collections', undefined, queryParams); + + decoders.ReadCollectionsResponse?.(response.body); + + return { ...response.body, metadata: response.metadata }; + } + + async updateCollections( + request: UpdateCollectionsRequest, + ): Promise> { + const body = { + collections: request?.collections, + user_id: request?.user_id, + user: request?.user, + }; + + const response = await this.apiClient.sendRequest< + StreamResponse + >( + 'PATCH', + '/api/v2/feeds/collections', + undefined, + undefined, + body, + 'application/json', + ); + + decoders.UpdateCollectionsResponse?.(response.body); + + return { ...response.body, metadata: response.metadata }; + } + + async createCollections( + request: CreateCollectionsRequest, + ): Promise> { + const body = { + collections: request?.collections, + user_id: request?.user_id, + user: request?.user, + }; + + const response = await this.apiClient.sendRequest< + StreamResponse + >( + 'POST', + '/api/v2/feeds/collections', + undefined, + undefined, + body, + 'application/json', + ); + + decoders.CreateCollectionsResponse?.(response.body); + + return { ...response.body, metadata: response.metadata }; + } + + async upsertCollections( + request: UpsertCollectionsRequest, + ): Promise> { + const body = { + collections: request?.collections, + }; + + const response = await this.apiClient.sendRequest< + StreamResponse + >( + 'PUT', + '/api/v2/feeds/collections', + undefined, + undefined, + body, + 'application/json', + ); + + decoders.UpsertCollectionsResponse?.(response.body); + + return { ...response.body, metadata: response.metadata }; + } + async getComments(request: { object_id: string; object_type: string; diff --git a/src/gen/model-decoders/decoders.ts b/src/gen/model-decoders/decoders.ts index fdcf3c3..151b6f0 100644 --- a/src/gen/model-decoders/decoders.ts +++ b/src/gen/model-decoders/decoders.ts @@ -205,6 +205,8 @@ decoders.ActivityResponse = (input?: Record) => { own_reactions: { type: 'FeedsReactionResponse', isSingle: false }, + collections: { type: 'EnrichedCollectionResponse', isSingle: false }, + reaction_groups: { type: 'ReactionGroupResponse', isSingle: false }, user: { type: 'UserResponse', isSingle: true }, @@ -1478,6 +1480,15 @@ decoders.ClosedCaptionEvent = (input?: Record) => { return decode(typeMappings, input); }; +decoders.CollectionResponse = (input?: Record) => { + const typeMappings: TypeMapping = { + created_at: { type: 'DatetimeType', isSingle: true }, + + updated_at: { type: 'DatetimeType', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders.Command = (input?: Record) => { const typeMappings: TypeMapping = { created_at: { type: 'DatetimeType', isSingle: true }, @@ -1637,6 +1648,13 @@ decoders.CreateChannelTypeResponse = (input?: Record) => { return decode(typeMappings, input); }; +decoders.CreateCollectionsResponse = (input?: Record) => { + const typeMappings: TypeMapping = { + collections: { type: 'CollectionResponse', isSingle: false }, + }; + return decode(typeMappings, input); +}; + decoders.CreateCommandResponse = (input?: Record) => { const typeMappings: TypeMapping = { command: { type: 'Command', isSingle: true }, @@ -1823,6 +1841,15 @@ decoders.EgressRTMPResponse = (input?: Record) => { return decode(typeMappings, input); }; +decoders.EnrichedCollectionResponse = (input?: Record) => { + const typeMappings: TypeMapping = { + created_at: { type: 'DatetimeType', isSingle: true }, + + updated_at: { type: 'DatetimeType', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders.EntityCreatorResponse = (input?: Record) => { const typeMappings: TypeMapping = { created_at: { type: 'DatetimeType', isSingle: true }, @@ -3617,6 +3644,13 @@ decoders.ReactivateUserResponse = (input?: Record) => { return decode(typeMappings, input); }; +decoders.ReadCollectionsResponse = (input?: Record) => { + const typeMappings: TypeMapping = { + collections: { type: 'CollectionResponse', isSingle: false }, + }; + return decode(typeMappings, input); +}; + decoders.ReadStateResponse = (input?: Record) => { const typeMappings: TypeMapping = { last_read: { type: 'DatetimeType', isSingle: true }, @@ -4215,6 +4249,13 @@ decoders.UpdateChannelTypeResponse = (input?: Record) => { return decode(typeMappings, input); }; +decoders.UpdateCollectionsResponse = (input?: Record) => { + const typeMappings: TypeMapping = { + collections: { type: 'CollectionResponse', isSingle: false }, + }; + return decode(typeMappings, input); +}; + decoders.UpdateCommandResponse = (input?: Record) => { const typeMappings: TypeMapping = { command: { type: 'Command', isSingle: true }, @@ -4324,6 +4365,13 @@ decoders.UpsertActivitiesResponse = (input?: Record) => { return decode(typeMappings, input); }; +decoders.UpsertCollectionsResponse = (input?: Record) => { + const typeMappings: TypeMapping = { + collections: { type: 'CollectionResponse', isSingle: false }, + }; + return decode(typeMappings, input); +}; + decoders.UpsertConfigResponse = (input?: Record) => { const typeMappings: TypeMapping = { config: { type: 'ConfigResponse', isSingle: true }, diff --git a/src/gen/models/index.ts b/src/gen/models/index.ts index a375cfd..9c188b0 100644 --- a/src/gen/models/index.ts +++ b/src/gen/models/index.ts @@ -487,6 +487,8 @@ export interface ActivityRequest { attachments?: Attachment[]; + collection_refs?: string[]; + filter_tags?: string[]; interest_tags?: string[]; @@ -541,6 +543,8 @@ export interface ActivityResponse { own_reactions: FeedsReactionResponse[]; + collections: Record; + custom: Record; reaction_groups: Record; @@ -665,6 +669,8 @@ export interface AddActivityRequest { attachments?: Attachment[]; + collection_refs?: string[]; + filter_tags?: string[]; interest_tags?: string[]; @@ -3508,6 +3514,30 @@ export interface CollectUserFeedbackResponse { duration: string; } +export interface CollectionRequest { + name: string; + + custom: Record; + + id?: string; + + user_id?: string; +} + +export interface CollectionResponse { + created_at: Date; + + id: string; + + name: string; + + updated_at: Date; + + custom: Record; + + user_id?: string; +} + export interface Command { args: string; @@ -3958,6 +3988,20 @@ export interface CreateChannelTypeResponse { automod_thresholds?: Thresholds; } +export interface CreateCollectionsRequest { + collections: CollectionRequest[]; + + user_id?: string; + + user?: UserRequest; +} + +export interface CreateCollectionsResponse { + duration: string; + + collections: CollectionResponse[]; +} + export interface CreateCommandRequest { description: string; @@ -4419,6 +4463,10 @@ export interface DeleteChannelsResultResponse { error?: string; } +export interface DeleteCollectionsResponse { + duration: string; +} + export interface DeleteCommandResponse { duration: string; @@ -4743,6 +4791,22 @@ export interface EnrichedActivity { target?: Data; } +export interface EnrichedCollectionResponse { + created_at: Date; + + id: string; + + name: string; + + status: 'ok' | 'notfound'; + + updated_at: Date; + + custom: Record; + + user_id?: string; +} + export interface EnrichedReaction { activity_id: string; @@ -10129,6 +10193,12 @@ export interface ReactivateUsersResponse { task_id: string; } +export interface ReadCollectionsResponse { + duration: string; + + collections: CollectionResponse[]; +} + export interface ReadReceipts { enabled: boolean; } @@ -11996,6 +12066,8 @@ export interface UpdateActivityRequest { attachments?: Attachment[]; + collection_refs?: string[]; + feeds?: string[]; filter_tags?: string[]; @@ -12425,6 +12497,28 @@ export interface UpdateChannelTypeResponse { automod_thresholds?: Thresholds; } +export interface UpdateCollectionRequest { + id: string; + + name: string; + + custom: Record; +} + +export interface UpdateCollectionsRequest { + collections: UpdateCollectionRequest[]; + + user_id?: string; + + user?: UserRequest; +} + +export interface UpdateCollectionsResponse { + duration: string; + + collections: CollectionResponse[]; +} + export interface UpdateCommandRequest { description: string; @@ -12846,6 +12940,16 @@ export interface UpsertActivitiesResponse { activities: ActivityResponse[]; } +export interface UpsertCollectionsRequest { + collections: CollectionRequest[]; +} + +export interface UpsertCollectionsResponse { + duration: string; + + collections: CollectionResponse[]; +} + export interface UpsertConfigRequest { key: string;