diff --git a/src/Generated/CommonTrait.php b/src/Generated/CommonTrait.php index 6b804b1d..7ace6997 100644 --- a/src/Generated/CommonTrait.php +++ b/src/Generated/CommonTrait.php @@ -385,6 +385,71 @@ public function createImport(GeneratedModels\CreateImportRequest $requestData): // Use the provided request data array directly return StreamResponse::fromJson($this->makeRequest('POST', $path, $queryParams, $requestData), GeneratedModels\CreateImportResponse::class); } + /** + * Lists all import v2 tasks for the app + * + * + * @param int $state + * @return StreamResponse + * @throws StreamException + */ + public function listImportV2Tasks(int $state): StreamResponse { + $path = '/api/v2/imports/v2'; + + $queryParams = []; + if ($state !== null) { + $queryParams['state'] = $state; + } + $requestData = null; + return StreamResponse::fromJson($this->makeRequest('GET', $path, $queryParams, $requestData), GeneratedModels\ListImportV2TasksResponse::class); + } + /** + * Creates a new import v2 task + * + * + * @param GeneratedModels\CreateImportV2TaskRequest $requestData + * @return StreamResponse + * @throws StreamException + */ + public function createImportV2Task(GeneratedModels\CreateImportV2TaskRequest $requestData): StreamResponse { + $path = '/api/v2/imports/v2'; + + $queryParams = []; + // Use the provided request data array directly + return StreamResponse::fromJson($this->makeRequest('POST', $path, $queryParams, $requestData), GeneratedModels\CreateImportV2TaskResponse::class); + } + /** + * Deletes an import v2 task. Can only delete tasks in queued state. + * + * + * @param string $id + * @return StreamResponse + * @throws StreamException + */ + public function deleteImportV2Task(string $id): StreamResponse { + $path = '/api/v2/imports/v2/{id}'; + $path = str_replace('{id}', (string) $id, $path); + + $queryParams = []; + $requestData = null; + return StreamResponse::fromJson($this->makeRequest('DELETE', $path, $queryParams, $requestData), GeneratedModels\DeleteImportV2TaskResponse::class); + } + /** + * Gets a single import v2 task by ID + * + * + * @param string $id + * @return StreamResponse + * @throws StreamException + */ + public function getImportV2Task(string $id): StreamResponse { + $path = '/api/v2/imports/v2/{id}'; + $path = str_replace('{id}', (string) $id, $path); + + $queryParams = []; + $requestData = null; + return StreamResponse::fromJson($this->makeRequest('GET', $path, $queryParams, $requestData), GeneratedModels\GetImportV2TaskResponse::class); + } /** * Gets an import * diff --git a/src/Generated/FeedsTrait.php b/src/Generated/FeedsTrait.php index 61db3eb7..508b9b3f 100644 --- a/src/Generated/FeedsTrait.php +++ b/src/Generated/FeedsTrait.php @@ -44,6 +44,24 @@ public function upsertActivities(GeneratedModels\UpsertActivitiesRequest $reques // Use the provided request data array directly return StreamResponse::fromJson($this->makeRequest('POST', $path, $queryParams, $requestData), GeneratedModels\UpsertActivitiesResponse::class); } + /** + * Updates certain fields of multiple activities in a batch. Use 'set' to update specific fields and 'unset' to remove fields. Activities that fail due to not found, permission denied, or no changes detected are silently skipped and not included in the response. However, validation errors (e.g., updating reserved fields, invalid field values) will fail the entire batch request. + * + * Sends events: + * - feeds.activity.updated + * + * + * @param GeneratedModels\UpdateActivitiesPartialBatchRequest $requestData + * @return StreamResponse + * @throws StreamException + */ + public function updateActivitiesPartialBatch(GeneratedModels\UpdateActivitiesPartialBatchRequest $requestData): StreamResponse { + $path = '/api/v2/feeds/activities/batch/partial'; + + $queryParams = []; + // Use the provided request data array directly + return StreamResponse::fromJson($this->makeRequest('PATCH', $path, $queryParams, $requestData), GeneratedModels\UpdateActivitiesPartialBatchResponse::class); + } /** * Delete one or more activities by their IDs * @@ -244,16 +262,20 @@ public function queryActivityReactions(string $activityID, GeneratedModels\Query * * @param string $activityID * @param string $type + * @param bool $deleteNotificationActivity * @param string $userID * @return StreamResponse * @throws StreamException */ - public function deleteActivityReaction(string $activityID, string $type, string $userID): StreamResponse { + public function deleteActivityReaction(string $activityID, string $type, bool $deleteNotificationActivity, string $userID): StreamResponse { $path = '/api/v2/feeds/activities/{activity_id}/reactions/{type}'; $path = str_replace('{activity_id}', (string) $activityID, $path); $path = str_replace('{type}', (string) $type, $path); $queryParams = []; + if ($deleteNotificationActivity !== null) { + $queryParams['delete_notification_activity'] = $deleteNotificationActivity; + } if ($userID !== null) { $queryParams['user_id'] = $userID; } @@ -266,10 +288,11 @@ public function deleteActivityReaction(string $activityID, string $type, string * * @param string $id * @param bool $hardDelete + * @param bool $deleteNotificationActivity * @return StreamResponse * @throws StreamException */ - public function deleteActivity(string $id, bool $hardDelete): StreamResponse { + public function deleteActivity(string $id, bool $hardDelete, bool $deleteNotificationActivity): StreamResponse { $path = '/api/v2/feeds/activities/{id}'; $path = str_replace('{id}', (string) $id, $path); @@ -277,6 +300,9 @@ public function deleteActivity(string $id, bool $hardDelete): StreamResponse { if ($hardDelete !== null) { $queryParams['hard_delete'] = $hardDelete; } + if ($deleteNotificationActivity !== null) { + $queryParams['delete_notification_activity'] = $deleteNotificationActivity; + } $requestData = null; return StreamResponse::fromJson($this->makeRequest('DELETE', $path, $queryParams, $requestData), GeneratedModels\DeleteActivityResponse::class); } @@ -336,6 +362,23 @@ public function updateActivity(string $id, GeneratedModels\UpdateActivityRequest // Use the provided request data array directly return StreamResponse::fromJson($this->makeRequest('PUT', $path, $queryParams, $requestData), GeneratedModels\UpdateActivityResponse::class); } + /** + * Restores a soft-deleted activity by its ID. Only the activity owner can restore their own activities. + * + * + * @param string $id + * @param GeneratedModels\RestoreActivityRequest $requestData + * @return StreamResponse + * @throws StreamException + */ + public function restoreActivity(string $id, GeneratedModels\RestoreActivityRequest $requestData): StreamResponse { + $path = '/api/v2/feeds/activities/{id}/restore'; + $path = str_replace('{id}', (string) $id, $path); + + $queryParams = []; + // Use the provided request data array directly + return StreamResponse::fromJson($this->makeRequest('POST', $path, $queryParams, $requestData), GeneratedModels\RestoreActivityResponse::class); + } /** * Query bookmark folders with filter query * @@ -493,13 +536,14 @@ public function upsertCollections(GeneratedModels\UpsertCollectionsRequest $requ * @param int $depth * @param string $sort * @param int $repliesLimit + * @param string $userID * @param int $limit * @param string $prev * @param string $next * @return StreamResponse * @throws StreamException */ - public function getComments(string $objectID, string $objectType, int $depth, string $sort, int $repliesLimit, int $limit, string $prev, string $next): StreamResponse { + public function getComments(string $objectID, string $objectType, int $depth, string $sort, int $repliesLimit, string $userID, int $limit, string $prev, string $next): StreamResponse { $path = '/api/v2/feeds/comments'; $queryParams = []; @@ -518,6 +562,9 @@ public function getComments(string $objectID, string $objectType, int $depth, st if ($repliesLimit !== null) { $queryParams['replies_limit'] = $repliesLimit; } + if ($userID !== null) { + $queryParams['user_id'] = $userID; + } if ($limit !== null) { $queryParams['limit'] = $limit; } @@ -581,10 +628,11 @@ public function queryComments(GeneratedModels\QueryCommentsRequest $requestData) * * @param string $id * @param bool $hardDelete + * @param bool $deleteNotificationActivity * @return StreamResponse * @throws StreamException */ - public function deleteComment(string $id, bool $hardDelete): StreamResponse { + public function deleteComment(string $id, bool $hardDelete, bool $deleteNotificationActivity): StreamResponse { $path = '/api/v2/feeds/comments/{id}'; $path = str_replace('{id}', (string) $id, $path); @@ -592,6 +640,9 @@ public function deleteComment(string $id, bool $hardDelete): StreamResponse { if ($hardDelete !== null) { $queryParams['hard_delete'] = $hardDelete; } + if ($deleteNotificationActivity !== null) { + $queryParams['delete_notification_activity'] = $deleteNotificationActivity; + } $requestData = null; return StreamResponse::fromJson($this->makeRequest('DELETE', $path, $queryParams, $requestData), GeneratedModels\DeleteCommentResponse::class); } @@ -668,16 +719,20 @@ public function queryCommentReactions(string $id, GeneratedModels\QueryCommentRe * * @param string $id * @param string $type + * @param bool $deleteNotificationActivity * @param string $userID * @return StreamResponse * @throws StreamException */ - public function deleteCommentReaction(string $id, string $type, string $userID): StreamResponse { + public function deleteCommentReaction(string $id, string $type, bool $deleteNotificationActivity, string $userID): StreamResponse { $path = '/api/v2/feeds/comments/{id}/reactions/{type}'; $path = str_replace('{id}', (string) $id, $path); $path = str_replace('{type}', (string) $type, $path); $queryParams = []; + if ($deleteNotificationActivity !== null) { + $queryParams['delete_notification_activity'] = $deleteNotificationActivity; + } if ($userID !== null) { $queryParams['user_id'] = $userID; } @@ -692,13 +747,14 @@ public function deleteCommentReaction(string $id, string $type, string $userID): * @param int $depth * @param string $sort * @param int $repliesLimit + * @param string $userID * @param int $limit * @param string $prev * @param string $next * @return StreamResponse * @throws StreamException */ - public function getCommentReplies(string $id, int $depth, string $sort, int $repliesLimit, int $limit, string $prev, string $next): StreamResponse { + public function getCommentReplies(string $id, int $depth, string $sort, int $repliesLimit, string $userID, int $limit, string $prev, string $next): StreamResponse { $path = '/api/v2/feeds/comments/{id}/replies'; $path = str_replace('{id}', (string) $id, $path); @@ -712,6 +768,9 @@ public function getCommentReplies(string $id, int $depth, string $sort, int $rep if ($repliesLimit !== null) { $queryParams['replies_limit'] = $repliesLimit; } + if ($userID !== null) { + $queryParams['user_id'] = $userID; + } if ($limit !== null) { $queryParams['limit'] = $limit; } @@ -1403,15 +1462,19 @@ public function rejectFollow(GeneratedModels\RejectFollowRequest $requestData): * * @param string $source * @param string $target + * @param bool $deleteNotificationActivity * @return StreamResponse * @throws StreamException */ - public function unfollow(string $source, string $target): StreamResponse { + public function unfollow(string $source, string $target, bool $deleteNotificationActivity): StreamResponse { $path = '/api/v2/feeds/follows/{source}/{target}'; $path = str_replace('{source}', (string) $source, $path); $path = str_replace('{target}', (string) $target, $path); $queryParams = []; + if ($deleteNotificationActivity !== null) { + $queryParams['delete_notification_activity'] = $deleteNotificationActivity; + } $requestData = null; return StreamResponse::fromJson($this->makeRequest('DELETE', $path, $queryParams, $requestData), GeneratedModels\UnfollowResponse::class); } diff --git a/src/Generated/ModerationTrait.php b/src/Generated/ModerationTrait.php index 92947643..91c04f67 100644 --- a/src/Generated/ModerationTrait.php +++ b/src/Generated/ModerationTrait.php @@ -14,6 +14,52 @@ */ trait ModerationTrait { + /** + * Appeal against the moderation decision + * + * + * @param GeneratedModels\AppealRequest $requestData + * @return StreamResponse + * @throws StreamException + */ + public function appeal(GeneratedModels\AppealRequest $requestData): StreamResponse { + $path = '/api/v2/moderation/appeal'; + + $queryParams = []; + // Use the provided request data array directly + return StreamResponse::fromJson($this->makeRequest('POST', $path, $queryParams, $requestData), GeneratedModels\AppealResponse::class); + } + /** + * Retrieve a specific appeal item by its ID + * + * + * @param string $id + * @return StreamResponse + * @throws StreamException + */ + public function getAppeal(string $id): StreamResponse { + $path = '/api/v2/moderation/appeal/{id}'; + $path = str_replace('{id}', (string) $id, $path); + + $queryParams = []; + $requestData = null; + return StreamResponse::fromJson($this->makeRequest('GET', $path, $queryParams, $requestData), GeneratedModels\GetAppealResponse::class); + } + /** + * Query Appeals + * + * + * @param GeneratedModels\QueryAppealsRequest $requestData + * @return StreamResponse + * @throws StreamException + */ + public function queryAppeals(GeneratedModels\QueryAppealsRequest $requestData): StreamResponse { + $path = '/api/v2/moderation/appeals'; + + $queryParams = []; + // Use the provided request data array directly + return StreamResponse::fromJson($this->makeRequest('POST', $path, $queryParams, $requestData), GeneratedModels\QueryAppealsResponse::class); + } /** * Ban a user from a channel or the entire app * diff --git a/src/GeneratedModels/ActivityRequest.php b/src/GeneratedModels/ActivityRequest.php index 283d5d5d..af9b6f56 100644 --- a/src/GeneratedModels/ActivityRequest.php +++ b/src/GeneratedModels/ActivityRequest.php @@ -8,12 +8,14 @@ * * @property string $type * @property array $feeds + * @property bool|null $createNotificationActivity * @property string|null $expiresAt * @property string|null $id * @property string|null $parentID * @property string|null $pollID * @property string|null $restrictReplies * @property bool|null $skipEnrichUrl + * @property bool|null $skipPush * @property string|null $text * @property string|null $userID * @property string|null $visibility @@ -31,13 +33,15 @@ class ActivityRequest extends BaseModel { public function __construct( public ?string $type = null, // Type of activity - public ?array $feeds = null, // List of feed IDs to add the activity to + public ?array $feeds = null, // List of feeds to add the activity to with a default max limit of 25 feeds + public ?bool $createNotificationActivity = null, // Whether to create notification activities for mentioned users public ?string $expiresAt = null, // Expiration time for the activity public ?string $id = null, // Optional ID for the activity public ?string $parentID = null, // ID of parent activity for replies/comments public ?string $pollID = null, // ID of a poll to attach to activity public ?string $restrictReplies = null, // Controls who can add comments/replies to this activity. Options: 'everyone' (default - anyone can reply), 'people_i_follow' (only people the activity creator follows can reply), 'nobody' (no one can reply) public ?bool $skipEnrichUrl = null, // Whether to skip URL enrichment for the activity + public ?bool $skipPush = null, // Whether to skip push notifications public ?string $text = null, // Text content of the activity public ?string $userID = null, // ID of the user creating the activity public ?string $visibility = null, // Visibility setting for the activity diff --git a/src/GeneratedModels/ActivityResponse.php b/src/GeneratedModels/ActivityResponse.php index febc2ee2..27feba82 100644 --- a/src/GeneratedModels/ActivityResponse.php +++ b/src/GeneratedModels/ActivityResponse.php @@ -39,6 +39,7 @@ * @property \DateTime|null $expiresAt * @property bool|null $isWatched * @property string|null $moderationAction + * @property string|null $selectorSource * @property string|null $text * @property string|null $visibilityTag * @property FeedResponse|null $currentFeed @@ -96,6 +97,7 @@ public function __construct( public ?\DateTime $expiresAt = null, // When the activity will expire public ?bool $isWatched = null, public ?string $moderationAction = null, + public ?string $selectorSource = null, // Which activity selector provided this activity (e.g., 'following', 'popular', 'interest'). Only set when using multiple activity selectors with ranking. public ?string $text = null, // Text content of the activity public ?string $visibilityTag = null, // If visibility is 'tag', this is the tag name public ?FeedResponse $currentFeed = null, diff --git a/src/GeneratedModels/ActivityRestoredEvent.php b/src/GeneratedModels/ActivityRestoredEvent.php new file mode 100644 index 00000000..43c52c2e --- /dev/null +++ b/src/GeneratedModels/ActivityRestoredEvent.php @@ -0,0 +1,34 @@ + $failedChannels + * @property object $custom + * @property string $type + * @property \DateTime|null $receivedAt + */ +class ChannelBatchCompletedEvent extends BaseModel +{ + public function __construct( + public ?\DateTime $batchCreatedAt = null, + public ?\DateTime $createdAt = null, + public ?\DateTime $finishedAt = null, + public ?string $operation = null, + public ?string $status = null, + public ?int $successChannelsCount = null, + public ?string $taskID = null, + /** @var array|null */ + #[ArrayOf(FailedChannelUpdates::class)] + public ?array $failedChannels = null, + public ?object $custom = null, + public ?string $type = null, + public ?\DateTime $receivedAt = null, + ) { + } + + // BaseModel automatically handles jsonSerialize(), toArray(), and fromJson() using constructor types! + // Use #[JsonKey('user_id')] to override field names if needed. +} diff --git a/src/GeneratedModels/ChannelBatchStartedEvent.php b/src/GeneratedModels/ChannelBatchStartedEvent.php new file mode 100644 index 00000000..49d731ce --- /dev/null +++ b/src/GeneratedModels/ChannelBatchStartedEvent.php @@ -0,0 +1,42 @@ + $failedChannels + * @property object $custom + * @property string $type + * @property \DateTime|null $receivedAt + */ +class ChannelBatchStartedEvent extends BaseModel +{ + public function __construct( + public ?\DateTime $batchCreatedAt = null, + public ?\DateTime $createdAt = null, + public ?\DateTime $finishedAt = null, + public ?string $operation = null, + public ?string $status = null, + public ?int $successChannelsCount = null, + public ?string $taskID = null, + /** @var array|null */ + #[ArrayOf(FailedChannelUpdates::class)] + public ?array $failedChannels = null, + public ?object $custom = null, + public ?string $type = null, + public ?\DateTime $receivedAt = null, + ) { + } + + // BaseModel automatically handles jsonSerialize(), toArray(), and fromJson() using constructor types! + // Use #[JsonKey('user_id')] to override field names if needed. +} diff --git a/src/GeneratedModels/CommentResponse.php b/src/GeneratedModels/CommentResponse.php index ef033c34..92a20f42 100644 --- a/src/GeneratedModels/CommentResponse.php +++ b/src/GeneratedModels/CommentResponse.php @@ -23,6 +23,7 @@ * @property UserResponse $user * @property int|null $controversyScore * @property \DateTime|null $deletedAt + * @property \DateTime|null $editedAt * @property string|null $parentID * @property string|null $text * @property array|null $attachments @@ -55,6 +56,7 @@ public function __construct( public ?UserResponse $user = null, public ?int $controversyScore = null, // Controversy score of the comment public ?\DateTime $deletedAt = null, // When the comment was deleted + public ?\DateTime $editedAt = null, // When the comment was last edited public ?string $parentID = null, // ID of parent comment for nested replies public ?string $text = null, // Text content of the comment /** @var array|null */ diff --git a/src/GeneratedModels/CompositeRecordingResponse.php b/src/GeneratedModels/CompositeRecordingResponse.php new file mode 100644 index 00000000..dca02dd6 --- /dev/null +++ b/src/GeneratedModels/CompositeRecordingResponse.php @@ -0,0 +1,20 @@ + $rtmps + * @property CompositeRecordingResponse|null $compositeRecording * @property FrameRecordingResponse|null $frameRecording * @property EgressHLSResponse|null $hls + * @property IndividualRecordingResponse|null $individualRecording + * @property RawRecordingResponse|null $rawRecording */ class EgressResponse extends BaseModel { @@ -18,8 +21,11 @@ public function __construct( /** @var array|null */ #[ArrayOf(EgressRTMPResponse::class)] public ?array $rtmps = null, + public ?CompositeRecordingResponse $compositeRecording = null, public ?FrameRecordingResponse $frameRecording = null, public ?EgressHLSResponse $hls = null, + public ?IndividualRecordingResponse $individualRecording = null, + public ?RawRecordingResponse $rawRecording = null, ) { } diff --git a/src/GeneratedModels/EnrichmentOptions.php b/src/GeneratedModels/EnrichmentOptions.php index c1f250c2..bb0d565e 100644 --- a/src/GeneratedModels/EnrichmentOptions.php +++ b/src/GeneratedModels/EnrichmentOptions.php @@ -4,8 +4,9 @@ namespace GetStream\GeneratedModels; /** - * + * Options to skip specific enrichments to improve performance. Default is false (enrichments are included). Setting a field to true skips that enrichment. * + * @property bool|null $enrichOwnFollowings * @property bool|null $skipActivity * @property bool|null $skipActivityCollections * @property bool|null $skipActivityComments @@ -27,23 +28,24 @@ class EnrichmentOptions extends BaseModel { public function __construct( - public ?bool $skipActivity = null, - public ?bool $skipActivityCollections = null, - public ?bool $skipActivityComments = null, - public ?bool $skipActivityCurrentFeed = null, - public ?bool $skipActivityMentionedUsers = null, - public ?bool $skipActivityOwnBookmarks = null, - public ?bool $skipActivityParents = null, - public ?bool $skipActivityPoll = null, - public ?bool $skipActivityReactions = null, - public ?bool $skipActivityRefreshImageUrls = null, - public ?bool $skipAll = null, - public ?bool $skipFeedMemberUser = null, - public ?bool $skipFollowers = null, - public ?bool $skipFollowing = null, - public ?bool $skipOwnCapabilities = null, - public ?bool $skipOwnFollows = null, - public ?bool $skipPins = null, + public ?bool $enrichOwnFollowings = null, // Default: false. When true, includes fetching and enriching own_followings (follows where activity author's feeds follow current user's feeds). + public ?bool $skipActivity = null, // Default: false. When true, skips all activity enrichments. + public ?bool $skipActivityCollections = null, // Default: false. When true, skips enriching collections on activities. + public ?bool $skipActivityComments = null, // Default: false. When true, skips enriching comments on activities. + public ?bool $skipActivityCurrentFeed = null, // Default: false. When true, skips enriching current_feed on activities. Note: CurrentFeed is still computed for permission checks, but enrichment is skipped. + public ?bool $skipActivityMentionedUsers = null, // Default: false. When true, skips enriching mentioned users on activities. + public ?bool $skipActivityOwnBookmarks = null, // Default: false. When true, skips enriching own bookmarks on activities. + public ?bool $skipActivityParents = null, // Default: false. When true, skips enriching parent activities. + public ?bool $skipActivityPoll = null, // Default: false. When true, skips enriching poll data on activities. + public ?bool $skipActivityReactions = null, // Default: false. When true, skips fetching and enriching latest and own reactions on activities. Note: If reactions are already denormalized in the database, they will still be included. + public ?bool $skipActivityRefreshImageUrls = null, // Default: false. When true, skips refreshing image URLs on activities. + public ?bool $skipAll = null, // Default: false. When true, skips all enrichments. + public ?bool $skipFeedMemberUser = null, // Default: false. When true, skips enriching user data on feed members. + public ?bool $skipFollowers = null, // Default: false. When true, skips fetching and enriching followers. Note: If followers_pagination is explicitly provided, followers will be fetched regardless of this setting. + public ?bool $skipFollowing = null, // Default: false. When true, skips fetching and enriching following. Note: If following_pagination is explicitly provided, following will be fetched regardless of this setting. + public ?bool $skipOwnCapabilities = null, // Default: false. When true, skips computing and including capabilities for feeds. + public ?bool $skipOwnFollows = null, // Default: false. When true, skips fetching and enriching own_follows (follows where user's feeds follow target feeds). + public ?bool $skipPins = null, // Default: false. When true, skips enriching pinned activities. ) { } diff --git a/src/GeneratedModels/EventHook.php b/src/GeneratedModels/EventHook.php index f656596d..33cd7e4b 100644 --- a/src/GeneratedModels/EventHook.php +++ b/src/GeneratedModels/EventHook.php @@ -13,6 +13,7 @@ * @property string|null $product * @property bool|null $shouldSendCustomEvents * @property string|null $snsAuthType + * @property bool|null $snsEventBasedMessageGroupIDEnabled * @property string|null $snsKey * @property string|null $snsRegion * @property string|null $snsRoleArn @@ -40,6 +41,7 @@ public function __construct( public ?string $product = null, public ?bool $shouldSendCustomEvents = null, public ?string $snsAuthType = null, + public ?bool $snsEventBasedMessageGroupIDEnabled = null, public ?string $snsKey = null, public ?string $snsRegion = null, public ?string $snsRoleArn = null, diff --git a/src/GeneratedModels/FeedOwnData.php b/src/GeneratedModels/FeedOwnData.php index b14ec21e..7767a899 100644 --- a/src/GeneratedModels/FeedOwnData.php +++ b/src/GeneratedModels/FeedOwnData.php @@ -7,6 +7,7 @@ * * * @property array|null $ownCapabilities + * @property array|null $ownFollowings * @property array|null $ownFollows * @property FeedMemberResponse|null $ownMembership */ @@ -16,6 +17,9 @@ public function __construct( /** @var array|null Capabilities the current user has for this feed */ #[ArrayOf(FeedOwnCapability::class)] public ?array $ownCapabilities = null, // Capabilities the current user has for this feed + /** @var array|null Follow relationships where the feed owner's feeds are following the current user's feeds (up to 5 total) */ + #[ArrayOf(FollowResponse::class)] + public ?array $ownFollowings = null, // Follow relationships where the feed owner's feeds are following the current user's feeds (up to 5 total) /** @var array|null Follow relationships where the current user's feeds are following this feed */ #[ArrayOf(FollowResponse::class)] public ?array $ownFollows = null, // Follow relationships where the current user's feeds are following this feed diff --git a/src/GeneratedModels/FeedResponse.php b/src/GeneratedModels/FeedResponse.php index e937dfcb..764d2684 100644 --- a/src/GeneratedModels/FeedResponse.php +++ b/src/GeneratedModels/FeedResponse.php @@ -23,6 +23,7 @@ * @property string|null $visibility * @property array|null $filterTags * @property array|null $ownCapabilities + * @property array|null $ownFollowings * @property array|null $ownFollows * @property object|null $custom * @property FeedMemberResponse|null $ownMembership @@ -49,6 +50,9 @@ public function __construct( /** @var array|null Capabilities the current user has for this feed */ #[ArrayOf(FeedOwnCapability::class)] public ?array $ownCapabilities = null, // Capabilities the current user has for this feed + /** @var array|null Follow relationships where the feed owner’s feeds are following the current user's feeds */ + #[ArrayOf(FollowResponse::class)] + public ?array $ownFollowings = null, // Follow relationships where the feed owner’s feeds are following the current user's feeds /** @var array|null Follow relationships where the current user's feeds are following this feed */ #[ArrayOf(FollowResponse::class)] public ?array $ownFollows = null, // Follow relationships where the current user's feeds are following this feed diff --git a/src/GeneratedModels/FeedSuggestionResponse.php b/src/GeneratedModels/FeedSuggestionResponse.php index ed827700..47209643 100644 --- a/src/GeneratedModels/FeedSuggestionResponse.php +++ b/src/GeneratedModels/FeedSuggestionResponse.php @@ -25,6 +25,7 @@ * @property string|null $visibility * @property array|null $filterTags * @property array|null $ownCapabilities + * @property array|null $ownFollowings * @property array|null $ownFollows * @property array|null $algorithmScores * @property object|null $custom @@ -54,6 +55,9 @@ public function __construct( /** @var array|null Capabilities the current user has for this feed */ #[ArrayOf(FeedOwnCapability::class)] public ?array $ownCapabilities = null, // Capabilities the current user has for this feed + /** @var array|null Follow relationships where the feed owner’s feeds are following the current user's feeds */ + #[ArrayOf(FollowResponse::class)] + public ?array $ownFollowings = null, // Follow relationships where the feed owner’s feeds are following the current user's feeds /** @var array|null Follow relationships where the current user's feeds are following this feed */ #[ArrayOf(FollowResponse::class)] public ?array $ownFollows = null, // Follow relationships where the current user's feeds are following this feed diff --git a/src/GeneratedModels/FollowRequest.php b/src/GeneratedModels/FollowRequest.php index d39a306a..75a927e7 100644 --- a/src/GeneratedModels/FollowRequest.php +++ b/src/GeneratedModels/FollowRequest.php @@ -11,6 +11,7 @@ * @property bool|null $createNotificationActivity * @property string|null $pushPreference * @property bool|null $skipPush + * @property string|null $status * @property object|null $custom */ class FollowRequest extends BaseModel @@ -20,7 +21,8 @@ public function __construct( public ?string $target = null, // Fully qualified ID of the target feed public ?bool $createNotificationActivity = null, // Whether to create a notification activity for this follow public ?string $pushPreference = null, // Push preference for the follow relationship - public ?bool $skipPush = null, + public ?bool $skipPush = null, // Whether to skip push for this follow + public ?string $status = null, // Status of the follow relationship public ?object $custom = null, // Custom data for the follow relationship ) { } diff --git a/src/GeneratedModels/FutureChannelBanResponse.php b/src/GeneratedModels/FutureChannelBanResponse.php new file mode 100644 index 00000000..c4d93342 --- /dev/null +++ b/src/GeneratedModels/FutureChannelBanResponse.php @@ -0,0 +1,30 @@ +|null $publishedTracks + * @property SessionClient|null $client + */ +class GetCallParticipantSessionMetricsResponse extends BaseModel +{ + public function __construct( + public ?string $duration = null, // Duration of the request in milliseconds + public ?bool $isPublisher = null, + public ?bool $isSubscriber = null, + public ?\DateTime $joinedAt = null, + public ?string $publisherType = null, + public ?string $userID = null, + public ?string $userSessionID = null, + /** @var array|null */ + #[ArrayOf(PublishedTrackMetrics::class)] + public ?array $publishedTracks = null, + public ?SessionClient $client = null, + ) { + } + + // BaseModel automatically handles jsonSerialize(), toArray(), and fromJson() using constructor types! + // Use #[JsonKey('user_id')] to override field names if needed. +} diff --git a/src/GeneratedModels/GetImportV2TaskResponse.php b/src/GeneratedModels/GetImportV2TaskResponse.php new file mode 100644 index 00000000..8f9d07a7 --- /dev/null +++ b/src/GeneratedModels/GetImportV2TaskResponse.php @@ -0,0 +1,34 @@ + $importTasks + * @property string|null $next + * @property string|null $prev + */ +class ListImportV2TasksResponse extends BaseModel +{ + public function __construct( + public ?string $duration = null, // Duration of the request in milliseconds + /** @var array|null */ + #[ArrayOf(ImportV2TaskItem::class)] + public ?array $importTasks = null, + public ?string $next = null, + public ?string $prev = null, + ) { + } + + // BaseModel automatically handles jsonSerialize(), toArray(), and fromJson() using constructor types! + // Use #[JsonKey('user_id')] to override field names if needed. +} diff --git a/src/GeneratedModels/MarkReviewedRequest.php b/src/GeneratedModels/MarkReviewedRequest.php index 88f6ddd2..b3717eee 100644 --- a/src/GeneratedModels/MarkReviewedRequest.php +++ b/src/GeneratedModels/MarkReviewedRequest.php @@ -7,12 +7,14 @@ * * * @property int|null $contentToMarkAsReviewedLimit + * @property string|null $decisionReason * @property bool|null $disableMarkingContentAsReviewed */ class MarkReviewedRequest extends BaseModel { public function __construct( public ?int $contentToMarkAsReviewedLimit = null, + public ?string $decisionReason = null, public ?bool $disableMarkingContentAsReviewed = null, ) { } diff --git a/src/GeneratedModels/MetricTimeSeries.php b/src/GeneratedModels/MetricTimeSeries.php new file mode 100644 index 00000000..be057990 --- /dev/null +++ b/src/GeneratedModels/MetricTimeSeries.php @@ -0,0 +1,20 @@ +|null $attachments + */ +class NotificationParentActivity extends BaseModel +{ + public function __construct( + public ?string $id = null, + public ?string $text = null, + public ?string $type = null, + public ?string $userID = null, + /** @var array|null */ + #[ArrayOf(Attachment::class)] + public ?array $attachments = null, + ) { + } + + // BaseModel automatically handles jsonSerialize(), toArray(), and fromJson() using constructor types! + // Use #[JsonKey('user_id')] to override field names if needed. +} diff --git a/src/GeneratedModels/NotificationTarget.php b/src/GeneratedModels/NotificationTarget.php index ad4dded6..f8245da5 100644 --- a/src/GeneratedModels/NotificationTarget.php +++ b/src/GeneratedModels/NotificationTarget.php @@ -13,6 +13,7 @@ * @property string|null $userID * @property array|null $attachments * @property NotificationComment|null $comment + * @property NotificationParentActivity|null $parentActivity */ class NotificationTarget extends BaseModel { @@ -26,6 +27,7 @@ public function __construct( #[ArrayOf(Attachment::class)] public ?array $attachments = null, // Attachments on the target activity (for activity targets) public ?NotificationComment $comment = null, + public ?NotificationParentActivity $parentActivity = null, ) { } diff --git a/src/GeneratedModels/OwnBatchRequest.php b/src/GeneratedModels/OwnBatchRequest.php index a6bab60b..9e4b7f05 100644 --- a/src/GeneratedModels/OwnBatchRequest.php +++ b/src/GeneratedModels/OwnBatchRequest.php @@ -4,7 +4,7 @@ namespace GetStream\GeneratedModels; /** - * Request to get own_follows, own_capabilities, and/or own_membership for multiple feeds. If fields is not specified, all three fields are returned. + * Request to get own_follows, own_followings, own_capabilities, and/or own_membership for multiple feeds. If fields is not specified, all fields are returned. * * @property array $feeds * @property string|null $userID @@ -16,7 +16,7 @@ class OwnBatchRequest extends BaseModel public function __construct( public ?array $feeds = null, // List of feed IDs to get own fields for public ?string $userID = null, - public ?array $fields = null, // Optional list of specific fields to return. If not specified, all fields (own_follows, own_capabilities, own_membership) are returned + public ?array $fields = null, // Optional list of specific fields to return. If not specified, all fields (own_follows, own_followings, own_capabilities, own_membership) are returned public ?UserRequest $user = null, ) { } diff --git a/src/GeneratedModels/ParsedPredefinedFilterResponse.php b/src/GeneratedModels/ParsedPredefinedFilterResponse.php new file mode 100644 index 00000000..36713957 --- /dev/null +++ b/src/GeneratedModels/ParsedPredefinedFilterResponse.php @@ -0,0 +1,26 @@ +|null $sort + */ +class ParsedPredefinedFilterResponse extends BaseModel +{ + public function __construct( + public ?string $name = null, + public ?object $filter = null, + /** @var array|null */ + #[ArrayOf(SortParamRequest::class)] + public ?array $sort = null, + ) { + } + + // BaseModel automatically handles jsonSerialize(), toArray(), and fromJson() using constructor types! + // Use #[JsonKey('user_id')] to override field names if needed. +} diff --git a/src/GeneratedModels/ParticipantSessionDetails.php b/src/GeneratedModels/ParticipantSessionDetails.php new file mode 100644 index 00000000..f6596b55 --- /dev/null +++ b/src/GeneratedModels/ParticipantSessionDetails.php @@ -0,0 +1,32 @@ +|null $warnings + * @property MetricTimeSeries|null $bitrate + * @property MetricTimeSeries|null $framerate + * @property ResolutionMetricsTimeSeries|null $resolution + */ +class PublishedTrackMetrics extends BaseModel +{ + public function __construct( + public ?string $codec = null, + public ?string $trackID = null, + public ?string $trackType = null, + /** @var array|null */ + #[ArrayOf(SessionWarningResponse::class)] + public ?array $warnings = null, + public ?MetricTimeSeries $bitrate = null, + public ?MetricTimeSeries $framerate = null, + public ?ResolutionMetricsTimeSeries $resolution = null, + ) { + } + + // BaseModel automatically handles jsonSerialize(), toArray(), and fromJson() using constructor types! + // Use #[JsonKey('user_id')] to override field names if needed. +} diff --git a/src/GeneratedModels/QueryAppealsRequest.php b/src/GeneratedModels/QueryAppealsRequest.php new file mode 100644 index 00000000..5416e1ac --- /dev/null +++ b/src/GeneratedModels/QueryAppealsRequest.php @@ -0,0 +1,34 @@ +|null $sort + * @property object|null $filter + * @property UserRequest|null $user + */ +class QueryAppealsRequest extends BaseModel +{ + public function __construct( + public ?int $limit = null, + public ?string $next = null, + public ?string $prev = null, + public ?string $userID = null, + /** @var array|null Sorting parameters for appeals */ + #[ArrayOf(SortParamRequest::class)] + public ?array $sort = null, // Sorting parameters for appeals + public ?object $filter = null, // Filter conditions for appeals + public ?UserRequest $user = null, + ) { + } + + // BaseModel automatically handles jsonSerialize(), toArray(), and fromJson() using constructor types! + // Use #[JsonKey('user_id')] to override field names if needed. +} diff --git a/src/GeneratedModels/QueryAppealsResponse.php b/src/GeneratedModels/QueryAppealsResponse.php new file mode 100644 index 00000000..fdf26d14 --- /dev/null +++ b/src/GeneratedModels/QueryAppealsResponse.php @@ -0,0 +1,28 @@ + $items + * @property string|null $next + * @property string|null $prev + */ +class QueryAppealsResponse extends BaseModel +{ + public function __construct( + public ?string $duration = null, + /** @var array|null List of Appeal Items */ + #[ArrayOf(AppealItemResponse::class)] + public ?array $items = null, // List of Appeal Items + public ?string $next = null, + public ?string $prev = null, + ) { + } + + // BaseModel automatically handles jsonSerialize(), toArray(), and fromJson() using constructor types! + // Use #[JsonKey('user_id')] to override field names if needed. +} diff --git a/src/GeneratedModels/QueryCallParticipantSessionsResponse.php b/src/GeneratedModels/QueryCallParticipantSessionsResponse.php new file mode 100644 index 00000000..f99026c0 --- /dev/null +++ b/src/GeneratedModels/QueryCallParticipantSessionsResponse.php @@ -0,0 +1,40 @@ + $participantsSessions + * @property string|null $next + * @property string|null $prev + * @property CallSessionResponse|null $session + */ +class QueryCallParticipantSessionsResponse extends BaseModel +{ + public function __construct( + public ?string $callID = null, + public ?string $callSessionID = null, + public ?string $callType = null, + public ?int $duration = null, // Duration of the request in milliseconds + public ?int $totalParticipantDuration = null, + public ?int $totalParticipantSessions = null, + /** @var array|null */ + #[ArrayOf(ParticipantSessionDetails::class)] + public ?array $participantsSessions = null, + public ?string $next = null, + public ?string $prev = null, + public ?CallSessionResponse $session = null, + ) { + } + + // BaseModel automatically handles jsonSerialize(), toArray(), and fromJson() using constructor types! + // Use #[JsonKey('user_id')] to override field names if needed. +} diff --git a/src/GeneratedModels/QueryChannelsRequest.php b/src/GeneratedModels/QueryChannelsRequest.php index b2b3d9e0..a76b8944 100644 --- a/src/GeneratedModels/QueryChannelsRequest.php +++ b/src/GeneratedModels/QueryChannelsRequest.php @@ -10,10 +10,13 @@ * @property int|null $memberLimit * @property int|null $messageLimit * @property int|null $offset + * @property string|null $predefinedFilter * @property bool|null $state * @property string|null $userID * @property array|null $sort * @property object|null $filterConditions + * @property object|null $filterValues + * @property object|null $sortValues * @property UserRequest|null $user */ class QueryChannelsRequest extends BaseModel @@ -23,12 +26,15 @@ public function __construct( public ?int $memberLimit = null, // Number of members to limit public ?int $messageLimit = null, // Number of messages to limit public ?int $offset = null, // Channel pagination offset + public ?string $predefinedFilter = null, // ID of a predefined filter to use instead of filter_conditions public ?bool $state = null, // Whether to update channel state or not public ?string $userID = null, /** @var array|null List of sort parameters */ #[ArrayOf(SortParamRequest::class)] public ?array $sort = null, // List of sort parameters public ?object $filterConditions = null, + public ?object $filterValues = null, // Values to interpolate into the predefined filter template + public ?object $sortValues = null, public ?UserRequest $user = null, ) { } diff --git a/src/GeneratedModels/QueryChannelsResponse.php b/src/GeneratedModels/QueryChannelsResponse.php index 31dd38d6..9f23f4ba 100644 --- a/src/GeneratedModels/QueryChannelsResponse.php +++ b/src/GeneratedModels/QueryChannelsResponse.php @@ -8,6 +8,7 @@ * * @property string $duration * @property array $channels + * @property ParsedPredefinedFilterResponse|null $predefinedFilter */ class QueryChannelsResponse extends BaseModel { @@ -16,6 +17,7 @@ public function __construct( /** @var array|null List of channels */ #[ArrayOf(ChannelStateResponseFields::class)] public ?array $channels = null, // List of channels + public ?ParsedPredefinedFilterResponse $predefinedFilter = null, ) { } diff --git a/src/GeneratedModels/QueryFutureChannelBansPayload.php b/src/GeneratedModels/QueryFutureChannelBansPayload.php new file mode 100644 index 00000000..8bbc09d2 --- /dev/null +++ b/src/GeneratedModels/QueryFutureChannelBansPayload.php @@ -0,0 +1,30 @@ + $bans + */ +class QueryFutureChannelBansResponse extends BaseModel +{ + public function __construct( + public ?string $duration = null, // Duration of the request in milliseconds + /** @var array|null List of found future channel bans */ + #[ArrayOf(FutureChannelBanResponse::class)] + public ?array $bans = null, // List of found future channel bans + ) { + } + + // BaseModel automatically handles jsonSerialize(), toArray(), and fromJson() using constructor types! + // Use #[JsonKey('user_id')] to override field names if needed. +} diff --git a/src/GeneratedModels/RankingConfig.php b/src/GeneratedModels/RankingConfig.php index 7bbd9913..ff83b394 100644 --- a/src/GeneratedModels/RankingConfig.php +++ b/src/GeneratedModels/RankingConfig.php @@ -14,7 +14,7 @@ class RankingConfig extends BaseModel { public function __construct( - public ?string $type = null, // Type of ranking algorithm. Required. Must be one of: recency, expression, interest + public ?string $type = null, // Type of ranking algorithm. Required. Must be one of: expression, interest public ?string $score = null, // Scoring formula. Required when type is 'expression' or 'interest' public ?object $defaults = null, // Default values for ranking public ?array $functions = null, // Decay functions configuration diff --git a/src/GeneratedModels/RawRecordSettings.php b/src/GeneratedModels/RawRecordSettings.php new file mode 100644 index 00000000..9deac190 --- /dev/null +++ b/src/GeneratedModels/RawRecordSettings.php @@ -0,0 +1,20 @@ +|null $attachments @@ -57,6 +58,7 @@ public function __construct( public ?UserResponse $user = null, public ?int $controversyScore = null, public ?\DateTime $deletedAt = null, + public ?\DateTime $editedAt = null, public ?string $parentID = null, public ?string $text = null, /** @var array|null */ diff --git a/src/GeneratedModels/UnbanActionRequest.php b/src/GeneratedModels/UnbanActionRequest.php index 61f2ac4b..8cb8c542 100644 --- a/src/GeneratedModels/UnbanActionRequest.php +++ b/src/GeneratedModels/UnbanActionRequest.php @@ -5,10 +5,13 @@ namespace GetStream\GeneratedModels; /** * + * + * @property string|null $decisionReason */ class UnbanActionRequest extends BaseModel { public function __construct( + public ?string $decisionReason = null, ) { } diff --git a/src/GeneratedModels/UnblockActionRequest.php b/src/GeneratedModels/UnblockActionRequest.php index d00a0374..c220cfaf 100644 --- a/src/GeneratedModels/UnblockActionRequest.php +++ b/src/GeneratedModels/UnblockActionRequest.php @@ -5,10 +5,13 @@ namespace GetStream\GeneratedModels; /** * + * + * @property string|null $decisionReason */ class UnblockActionRequest extends BaseModel { public function __construct( + public ?string $decisionReason = null, ) { } diff --git a/src/GeneratedModels/UnfollowBatchRequest.php b/src/GeneratedModels/UnfollowBatchRequest.php index 24e3658b..32164b9e 100644 --- a/src/GeneratedModels/UnfollowBatchRequest.php +++ b/src/GeneratedModels/UnfollowBatchRequest.php @@ -7,6 +7,7 @@ * * * @property array $follows + * @property bool|null $deleteNotificationActivity */ class UnfollowBatchRequest extends BaseModel { @@ -14,6 +15,7 @@ public function __construct( /** @var array|null List of follow relationships to remove */ #[ArrayOf(FollowPair::class)] public ?array $follows = null, // List of follow relationships to remove + public ?bool $deleteNotificationActivity = null, // Whether to delete the corresponding notification activity (default: false) ) { } diff --git a/src/GeneratedModels/UpdateActivitiesPartialBatchRequest.php b/src/GeneratedModels/UpdateActivitiesPartialBatchRequest.php new file mode 100644 index 00000000..feaa7f60 --- /dev/null +++ b/src/GeneratedModels/UpdateActivitiesPartialBatchRequest.php @@ -0,0 +1,22 @@ + $changes + */ +class UpdateActivitiesPartialBatchRequest extends BaseModel +{ + public function __construct( + /** @var array|null List of activity changes to apply. Each change specifies an activity ID and the fields to set/unset */ + #[ArrayOf(UpdateActivityPartialChangeRequest::class)] + public ?array $changes = null, // List of activity changes to apply. Each change specifies an activity ID and the fields to set/unset + ) { + } + + // BaseModel automatically handles jsonSerialize(), toArray(), and fromJson() using constructor types! + // Use #[JsonKey('user_id')] to override field names if needed. +} diff --git a/src/GeneratedModels/UpdateActivitiesPartialBatchResponse.php b/src/GeneratedModels/UpdateActivitiesPartialBatchResponse.php new file mode 100644 index 00000000..abc3ff84 --- /dev/null +++ b/src/GeneratedModels/UpdateActivitiesPartialBatchResponse.php @@ -0,0 +1,24 @@ + $activities + */ +class UpdateActivitiesPartialBatchResponse extends BaseModel +{ + public function __construct( + public ?string $duration = null, + /** @var array|null List of successfully updated activities */ + #[ArrayOf(ActivityResponse::class)] + public ?array $activities = null, // List of successfully updated activities + ) { + } + + // BaseModel automatically handles jsonSerialize(), toArray(), and fromJson() using constructor types! + // Use #[JsonKey('user_id')] to override field names if needed. +} diff --git a/src/GeneratedModels/UpdateActivityPartialChangeRequest.php b/src/GeneratedModels/UpdateActivityPartialChangeRequest.php new file mode 100644 index 00000000..5d579075 --- /dev/null +++ b/src/GeneratedModels/UpdateActivityPartialChangeRequest.php @@ -0,0 +1,26 @@ +|null $attachments * @property array|null $collectionRefs * @property array|null $feeds * @property array|null $filterTags * @property array|null $interestTags + * @property array|null $mentionedUserIds * @property object|null $custom * @property ActivityLocation|null $location * @property UserRequest|null $user @@ -26,12 +29,14 @@ class UpdateActivityRequest extends BaseModel { public function __construct( public ?\DateTime $expiresAt = null, // Time when the activity will expire + public ?bool $handleMentionNotifications = null, // If true, creates notification activities for newly mentioned users and deletes notifications for users no longer mentioned public ?string $pollID = null, // Poll ID public ?string $restrictReplies = null, // Controls who can add comments/replies to this activity. Options: 'everyone' (default - anyone can reply), 'people_i_follow' (only people the activity creator follows can reply), 'nobody' (no one can reply) public ?bool $skipEnrichUrl = null, // Whether to skip URL enrichment for the activity public ?string $text = null, // The text content of the activity public ?string $userID = null, public ?string $visibility = null, // Visibility setting for the activity + public ?string $visibilityTag = null, // If visibility is 'tag', this is the tag name and is required /** @var array|null List of attachments for the activity */ #[ArrayOf(Attachment::class)] public ?array $attachments = null, // List of attachments for the activity @@ -39,6 +44,7 @@ public function __construct( public ?array $feeds = null, // List of feeds the activity is present in public ?array $filterTags = null, // Tags used for filtering the activity public ?array $interestTags = null, // Tags indicating interest categories + public ?array $mentionedUserIds = null, // List of user IDs mentioned in the activity public ?object $custom = null, // Custom data for the activity public ?ActivityLocation $location = null, public ?UserRequest $user = null, diff --git a/src/GeneratedModels/UpdateCommentRequest.php b/src/GeneratedModels/UpdateCommentRequest.php index 5725d671..f4ed970c 100644 --- a/src/GeneratedModels/UpdateCommentRequest.php +++ b/src/GeneratedModels/UpdateCommentRequest.php @@ -7,9 +7,12 @@ * * * @property string|null $comment + * @property bool|null $handleMentionNotifications * @property bool|null $skipEnrichUrl * @property bool|null $skipPush * @property string|null $userID + * @property array|null $attachments + * @property array|null $mentionedUserIds * @property object|null $custom * @property UserRequest|null $user */ @@ -17,9 +20,14 @@ class UpdateCommentRequest extends BaseModel { public function __construct( public ?string $comment = null, // Updated text content of the comment + public ?bool $handleMentionNotifications = null, // If true, creates notification activities for newly mentioned users and deletes notifications for users no longer mentioned public ?bool $skipEnrichUrl = null, // Whether to skip URL enrichment for this comment public ?bool $skipPush = null, public ?string $userID = null, + /** @var array|null Updated media attachments for the comment. Providing this field will replace all existing attachments. */ + #[ArrayOf(Attachment::class)] + public ?array $attachments = null, // Updated media attachments for the comment. Providing this field will replace all existing attachments. + public ?array $mentionedUserIds = null, // List of user IDs mentioned in the comment public ?object $custom = null, // Updated custom data for the comment public ?UserRequest $user = null, ) { diff --git a/src/GeneratedModels/UpdateFeedRequest.php b/src/GeneratedModels/UpdateFeedRequest.php index ca68a05d..330ab170 100644 --- a/src/GeneratedModels/UpdateFeedRequest.php +++ b/src/GeneratedModels/UpdateFeedRequest.php @@ -7,12 +7,18 @@ * * * @property string|null $createdByID + * @property string|null $description + * @property string|null $name + * @property array|null $filterTags * @property object|null $custom */ class UpdateFeedRequest extends BaseModel { public function __construct( public ?string $createdByID = null, // ID of the new feed creator (owner) + public ?string $description = null, // Description of the feed + public ?string $name = null, // Name of the feed + public ?array $filterTags = null, // Tags used for filtering feeds public ?object $custom = null, // Custom data for the feed ) { } diff --git a/src/GeneratedModels/UpdateFollowRequest.php b/src/GeneratedModels/UpdateFollowRequest.php index c9190195..fe6c30e2 100644 --- a/src/GeneratedModels/UpdateFollowRequest.php +++ b/src/GeneratedModels/UpdateFollowRequest.php @@ -12,6 +12,7 @@ * @property string|null $followerRole * @property string|null $pushPreference * @property bool|null $skipPush + * @property string|null $status * @property object|null $custom */ class UpdateFollowRequest extends BaseModel @@ -22,7 +23,8 @@ public function __construct( public ?bool $createNotificationActivity = null, // Whether to create a notification activity for this follow public ?string $followerRole = null, public ?string $pushPreference = null, // Push preference for the follow relationship - public ?bool $skipPush = null, + public ?bool $skipPush = null, // Whether to skip push for this follow + public ?string $status = null, // Status of the follow relationship public ?object $custom = null, // Custom data for the follow relationship ) { } diff --git a/src/GeneratedModels/UpsertActivitiesResponse.php b/src/GeneratedModels/UpsertActivitiesResponse.php index cf19baae..50f521cc 100644 --- a/src/GeneratedModels/UpsertActivitiesResponse.php +++ b/src/GeneratedModels/UpsertActivitiesResponse.php @@ -8,6 +8,7 @@ * * @property string $duration * @property array $activities + * @property int|null $mentionNotificationsCreated */ class UpsertActivitiesResponse extends BaseModel { @@ -16,6 +17,7 @@ public function __construct( /** @var array|null List of created or updated activities */ #[ArrayOf(ActivityResponse::class)] public ?array $activities = null, // List of created or updated activities + public ?int $mentionNotificationsCreated = null, // Total number of mention notification activities created for mentioned users across all activities ) { } diff --git a/src/GeneratedModels/UserIdenticalContentCountParameters.php b/src/GeneratedModels/UserIdenticalContentCountParameters.php new file mode 100644 index 00000000..c64371b4 --- /dev/null +++ b/src/GeneratedModels/UserIdenticalContentCountParameters.php @@ -0,0 +1,22 @@ +assertResponseSuccess($reactionResponse, 'add reaction for delete test'); // snippet-start: DeleteActivityReaction - $response = $this->feedsV3Client->deleteActivityReaction($activityId, 'like', $this->testUserId); + $response = $this->feedsV3Client->deleteActivityReaction($activityId, 'like', false, $this->testUserId); // snippet-end: DeleteActivityReaction $this->assertResponseSuccess($response, 'delete reaction'); @@ -1289,7 +1289,7 @@ public function test21DeleteComment(): void $commentId = $commentResponseData->comment->id ?? 'comment-id'; // Fallback if ID not returned // snippet-start: DeleteComment - $response = $this->feedsV3Client->deleteComment($commentId, false); // soft delete + $response = $this->feedsV3Client->deleteComment($commentId, false, false); // soft delete, no notification deletion // snippet-end: DeleteComment $this->assertResponseSuccess($response, 'delete comment'); @@ -1316,7 +1316,8 @@ public function test22UnfollowUser(): void // snippet-start: Unfollow $response = $this->feedsV3Client->unfollow( self::USER_FEED_TYPE . $this->testUserId, - self::USER_FEED_TYPE . $this->testUserId2 + self::USER_FEED_TYPE . $this->testUserId2, + false // deleteNotificationActivity ); // snippet-end: Unfollow @@ -1357,7 +1358,7 @@ public function test23DeleteActivities(): void foreach ($activitiesToDelete as $activityId) { // snippet-start: DeleteActivity - $response = $this->feedsV3Client->deleteActivity($activityId, false); // soft delete + $response = $this->feedsV3Client->deleteActivity($activityId, false, false); // soft delete, no notification deletion // snippet-end: DeleteActivity $this->assertResponseSuccess($response, 'delete activity'); @@ -2188,7 +2189,7 @@ private function cleanupResources(): void if (!empty($this->createdActivityIds)) { foreach ($this->createdActivityIds as $activityId) { try { - $this->feedsV3Client->deleteActivity($activityId, true); // hard delete + $this->feedsV3Client->deleteActivity($activityId, true, false); // hard delete, no notification deletion } catch (StreamApiException $e) { // Ignore cleanup errors echo "Warning: Failed to cleanup activity {$activityId}: " . $e->getMessage() . "\n"; @@ -2200,7 +2201,7 @@ private function cleanupResources(): void if (!empty($this->createdCommentIds)) { foreach ($this->createdCommentIds as $commentId) { try { - $this->feedsV3Client->deleteComment($commentId, true); // hard delete + $this->feedsV3Client->deleteComment($commentId, true, false); // hard delete, no notification deletion } catch (StreamApiException $e) { // Ignore cleanup errors echo "Warning: Failed to cleanup comment {$commentId}: " . $e->getMessage() . "\n";