diff --git a/src/Generated/ChatTrait.php b/src/Generated/ChatTrait.php index c8a8b64..b088f02 100644 --- a/src/Generated/ChatTrait.php +++ b/src/Generated/ChatTrait.php @@ -147,7 +147,7 @@ public function queryChannels(GeneratedModels\QueryChannelsRequest $requestData) return StreamResponse::fromJson($this->makeRequest('POST', $path, $queryParams, $requestData), GeneratedModels\QueryChannelsResponse::class); } /** - * Update channels in batch + * Update channels in batch. By default returns task_id for an asynchronous task. With synchronous: true, updateData accepts at most 100 explicit CIDs and returns a positive success_channels_count of channels selected for update after the database write completes, without task_id. Always poll a returned task_id, including when an older node ignores synchronous. * Sends events: * - channel.frozen * - channel.hidden @@ -1336,7 +1336,7 @@ public function deleteReminder(string $messageID, ?string $userID = null): Strea return StreamResponse::fromJson($this->makeRequest('DELETE', $path, $queryParams, $requestData), GeneratedModels\DeleteReminderResponse::class); } /** - * Updates an existing reminder + * Updates an existing reminder. remind_at and expires_at are both replaced on every call: omitting either one clears it * Sends events: * - reminder.updated * @@ -1354,7 +1354,7 @@ public function updateReminder(string $messageID, GeneratedModels\UpdateReminder return StreamResponse::fromJson($this->makeRequest('PATCH', $path, $queryParams, $requestData), GeneratedModels\UpdateReminderResponse::class); } /** - * Creates a new reminder + * Creates a new reminder. An optional expires_at hides the reminder from every read once it passes and stops it counting against the per-user reminder cap * Sends events: * - reminder.created * diff --git a/src/Generated/CommonTrait.php b/src/Generated/CommonTrait.php index e03a0ef..ec8d2cc 100644 --- a/src/Generated/CommonTrait.php +++ b/src/Generated/CommonTrait.php @@ -158,6 +158,20 @@ public function updateBlockList(string $name, GeneratedModels\UpdateBlockListReq // Use the provided request data array directly return StreamResponse::fromJson($this->makeRequest('PUT', $path, $queryParams, $requestData), GeneratedModels\UpdateBlockListResponse::class); } + /** + * Validates that Stream can publish to a customer-owned GCP Pub/Sub topic + * + * @param GeneratedModels\CheckGCPPubSubRequest $requestData + * @return StreamResponse + * @throws StreamException + */ + public function checkGCPPubSub(GeneratedModels\CheckGCPPubSubRequest $requestData): StreamResponse { + $path = '/api/v2/check_gcp_pubsub'; + + $queryParams = []; + // Use the provided request data array directly + return StreamResponse::fromJson($this->makeRequest('POST', $path, $queryParams, $requestData), GeneratedModels\CheckGCPPubSubResponse::class); + } /** * Sends a test message via push, this is a test endpoint to verify your push settings * @@ -805,15 +819,19 @@ public function deletePollOption(string $pollID, string $optionID, ?string $user * * @param string $pollID * @param string $optionID + * @param ?string $userID * @return StreamResponse * @throws StreamException */ - public function getPollOption(string $pollID, string $optionID): StreamResponse { + public function getPollOption(string $pollID, string $optionID, ?string $userID = null): StreamResponse { $path = '/api/v2/polls/{poll_id}/options/{option_id}'; $path = str_replace('{poll_id}', (string) $pollID, $path); $path = str_replace('{option_id}', (string) $optionID, $path); $queryParams = []; + if ($userID !== null) { + $queryParams['user_id'] = $userID; + } $requestData = null; return StreamResponse::fromJson($this->makeRequest('GET', $path, $queryParams, $requestData), GeneratedModels\PollOptionResponse::class); } diff --git a/src/Generated/FeedsTrait.php b/src/Generated/FeedsTrait.php index 7606e82..d6a6a8a 100644 --- a/src/Generated/FeedsTrait.php +++ b/src/Generated/FeedsTrait.php @@ -357,13 +357,17 @@ public function deleteActivity(string $id, ?bool $hardDelete = null, ?bool $dele * @param string $id * @param ?string $commentSort * @param ?int $commentLimit + * @param ?bool $skipOwnFollowings * @param ?string $userID * @param ?string $language * @param ?bool $translateText + * @param ?bool $includeTopLevelCommentCount + * @param ?bool $includeSoftDeletedActivities + * @param ?bool $includeModeratedActivities * @return StreamResponse * @throws StreamException */ - public function getActivity(string $id, ?string $commentSort = null, ?int $commentLimit = null, ?string $userID = null, ?string $language = null, ?bool $translateText = null): StreamResponse { + public function getActivity(string $id, ?string $commentSort = null, ?int $commentLimit = null, ?bool $skipOwnFollowings = null, ?string $userID = null, ?string $language = null, ?bool $translateText = null, ?bool $includeTopLevelCommentCount = null, ?bool $includeSoftDeletedActivities = null, ?bool $includeModeratedActivities = null): StreamResponse { $path = '/api/v2/feeds/activities/{id}'; $path = str_replace('{id}', (string) $id, $path); @@ -374,6 +378,9 @@ public function getActivity(string $id, ?string $commentSort = null, ?int $comme if ($commentLimit !== null) { $queryParams['comment_limit'] = $commentLimit; } + if ($skipOwnFollowings !== null) { + $queryParams['skip_own_followings'] = $skipOwnFollowings; + } if ($userID !== null) { $queryParams['user_id'] = $userID; } @@ -383,11 +390,20 @@ public function getActivity(string $id, ?string $commentSort = null, ?int $comme if ($translateText !== null) { $queryParams['translate_text'] = $translateText; } + if ($includeTopLevelCommentCount !== null) { + $queryParams['include_top_level_comment_count'] = $includeTopLevelCommentCount; + } + if ($includeSoftDeletedActivities !== null) { + $queryParams['include_soft_deleted_activities'] = $includeSoftDeletedActivities; + } + if ($includeModeratedActivities !== null) { + $queryParams['include_moderated_activities'] = $includeModeratedActivities; + } $requestData = null; return StreamResponse::fromJson($this->makeRequest('GET', $path, $queryParams, $requestData), GeneratedModels\GetActivityResponse::class); } /** - * Updates certain fields of the activity. Use 'set' to update specific fields and 'unset' to remove fields. This allows you to update only the fields you need without replacing the entire activity. Useful for updating reply restrictions ('restrict_replies'), mentioned users, or custom data. + * Updates certain fields of the activity. Use 'set' to update specific fields and 'unset' to remove fields. This allows you to update only the fields you need without replacing the entire activity. Useful for updating reply restrictions ('restrict_replies'), mentioned users, or custom data. Changing `feeds` is a placement change (add/delete on those feeds), not an activity content update. * Sends events: * - feeds.activity.updated * @@ -405,7 +421,7 @@ public function updateActivityPartial(string $id, GeneratedModels\UpdateActivity return StreamResponse::fromJson($this->makeRequest('PATCH', $path, $queryParams, $requestData), GeneratedModels\UpdateActivityPartialResponse::class); } /** - * Replaces an activity with the provided data. Use this to update text, attachments, reply restrictions ('restrict_replies'), mentioned users, and other activity fields. Note: This is a full update - any fields not provided will be cleared. + * Replaces an activity with the provided data. Use this to update text, attachments, reply restrictions ('restrict_replies'), mentioned users, and other activity fields. Note: This is a full update - any fields not provided will be cleared. Changing `feeds` is a placement change (add/delete on those feeds), not an activity content update. * Sends events: * - feeds.activity.updated * @@ -531,16 +547,20 @@ public function queryBookmarks(GeneratedModels\QueryBookmarksRequest $requestDat * Delete collections in a batch operation. Users can only delete their own collections. * * @param array $collectionRefs + * @param ?bool $hardDelete * @return StreamResponse * @throws StreamException */ - public function deleteCollections(array $collectionRefs): StreamResponse { + public function deleteCollections(array $collectionRefs, ?bool $hardDelete = null): StreamResponse { $path = '/api/v2/feeds/collections'; $queryParams = []; if ($collectionRefs !== null) { $queryParams['collection_refs'] = $collectionRefs; } + if ($hardDelete !== null) { + $queryParams['hard_delete'] = $hardDelete; + } $requestData = null; return StreamResponse::fromJson($this->makeRequest('DELETE', $path, $queryParams, $requestData), GeneratedModels\DeleteCollectionsResponse::class); } @@ -636,10 +656,11 @@ public function queryCollections(GeneratedModels\QueryCollectionsRequest $reques * @param ?int $limit * @param ?string $prev * @param ?string $next + * @param ?bool $includeTopLevelCommentCount * @return StreamResponse * @throws StreamException */ - public function getComments(string $objectID, string $objectType, ?int $depth = null, ?string $sort = null, ?int $repliesLimit = null, ?string $idAround = null, ?string $language = null, ?bool $translateText = null, ?string $userID = null, ?int $limit = null, ?string $prev = null, ?string $next = null): StreamResponse { + public function getComments(string $objectID, string $objectType, ?int $depth = null, ?string $sort = null, ?int $repliesLimit = null, ?string $idAround = null, ?string $language = null, ?bool $translateText = null, ?string $userID = null, ?int $limit = null, ?string $prev = null, ?string $next = null, ?bool $includeTopLevelCommentCount = null): StreamResponse { $path = '/api/v2/feeds/comments'; $queryParams = []; @@ -679,6 +700,9 @@ public function getComments(string $objectID, string $objectType, ?int $depth = if ($next !== null) { $queryParams['next'] = $next; } + if ($includeTopLevelCommentCount !== null) { + $queryParams['include_top_level_comment_count'] = $includeTopLevelCommentCount; + } $requestData = null; return StreamResponse::fromJson($this->makeRequest('GET', $path, $queryParams, $requestData), GeneratedModels\GetCommentsResponse::class); } @@ -867,6 +891,22 @@ public function updateComment(string $id, GeneratedModels\UpdateCommentRequest $ // Use the provided request data array directly return StreamResponse::fromJson($this->makeRequest('PATCH', $path, $queryParams, $requestData), GeneratedModels\UpdateCommentResponse::class); } + /** + * Hide or unhide a comment for the current user + * + * @param string $id + * @param GeneratedModels\CommentFeedbackRequest $requestData + * @return StreamResponse + * @throws StreamException + */ + public function commentFeedback(string $id, GeneratedModels\CommentFeedbackRequest $requestData): StreamResponse { + $path = '/api/v2/feeds/comments/{id}/feedback'; + $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\CommentFeedbackResponse::class); + } /** * Updates certain fields of the comment. Use 'set' to update specific fields and 'unset' to remove fields. * Sends events: @@ -1873,6 +1913,61 @@ public function updateMembershipLevel(string $id, GeneratedModels\UpdateMembersh // Use the provided request data array directly return StreamResponse::fromJson($this->makeRequest('PATCH', $path, $queryParams, $requestData), GeneratedModels\UpdateMembershipLevelResponse::class); } + /** + * Returns the feeds retention policies configured for the app. Server-side only. + * + * @return StreamResponse + * @throws StreamException + */ + public function feedsGetRetentionPolicy(): StreamResponse { + $path = '/api/v2/feeds/retention_policy'; + + $queryParams = []; + $requestData = null; + return StreamResponse::fromJson($this->makeRequest('GET', $path, $queryParams, $requestData), GeneratedModels\GetFeedsRetentionPolicyResponse::class); + } + /** + * Creates or updates a feeds retention policy for the app (an app may have multiple, each scoped to feed groups). Server-side only. + * + * @param GeneratedModels\SetFeedsRetentionPolicyRequest $requestData + * @return StreamResponse + * @throws StreamException + */ + public function feedsSetRetentionPolicy(GeneratedModels\SetFeedsRetentionPolicyRequest $requestData): StreamResponse { + $path = '/api/v2/feeds/retention_policy'; + + $queryParams = []; + // Use the provided request data array directly + return StreamResponse::fromJson($this->makeRequest('POST', $path, $queryParams, $requestData), GeneratedModels\SetFeedsRetentionPolicyResponse::class); + } + /** + * Removes the named feeds retention policy for the app (an app may hold several). Server-side only. + * + * @param GeneratedModels\DeleteFeedsRetentionPolicyRequest $requestData + * @return StreamResponse + * @throws StreamException + */ + public function feedsDeleteRetentionPolicy(GeneratedModels\DeleteFeedsRetentionPolicyRequest $requestData): StreamResponse { + $path = '/api/v2/feeds/retention_policy/delete'; + + $queryParams = []; + // Use the provided request data array directly + return StreamResponse::fromJson($this->makeRequest('POST', $path, $queryParams, $requestData), GeneratedModels\DeleteFeedsRetentionPolicyResponse::class); + } + /** + * Returns filtered and sorted feeds retention cleanup run history for the app. Supports filter_conditions on 'policy' and 'date' fields. Server-side only. + * + * @param GeneratedModels\GetFeedsRetentionPolicyRunsRequest $requestData + * @return StreamResponse + * @throws StreamException + */ + public function feedsGetRetentionPolicyRuns(GeneratedModels\GetFeedsRetentionPolicyRunsRequest $requestData): StreamResponse { + $path = '/api/v2/feeds/retention_policy/runs'; + + $queryParams = []; + // Use the provided request data array directly + return StreamResponse::fromJson($this->makeRequest('POST', $path, $queryParams, $requestData), GeneratedModels\GetFeedsRetentionPolicyRunsResponse::class); + } /** * Queries revision history for activities and comments * @@ -1977,7 +2072,26 @@ public function exportFeedUserData(string $userID): StreamResponse { return StreamResponse::fromJson($this->makeRequest('POST', $path, $queryParams, $requestData), GeneratedModels\ExportFeedUserDataResponse::class); } /** - * Returns the user's most common interest tags ranked by the number of distinct activities they reacted to that carried each tag. Client-side callers may only read their own interests; server-side callers may fetch any user. Results are sorted by descending count, then alphabetically by tag. + * Removes the given interest tags from a user, whether they were set manually or computed from reactions. A removed computed tag returns on the next recomputation if the user's reactions still support it; to keep a tag out of ranking for good, set it with a weight of 0 or below instead. Client-side callers may only manage their own interests; server-side callers may manage any user. Returns the user's remaining interests. + * + * @param string $userID + * @param array $tags + * @return StreamResponse + * @throws StreamException + */ + public function deleteUserInterests(string $userID, array $tags): StreamResponse { + $path = '/api/v2/feeds/users/{user_id}/interests'; + $path = str_replace('{user_id}', (string) $userID, $path); + + $queryParams = []; + if ($tags !== null) { + $queryParams['tags'] = $tags; + } + $requestData = null; + return StreamResponse::fromJson($this->makeRequest('DELETE', $path, $queryParams, $requestData), GeneratedModels\DeleteUserInterestsResponse::class); + } + /** + * Returns the user's interest tags with their ranking weights: tags computed from the activities the user reacted to and tags set manually through the API. Client-side callers may only read their own interests; server-side callers may fetch any user. Results are sorted by descending weight, then manually set tags before computed ones, then descending count, then alphabetically by tag. * * @param string $userID * @param ?int $limit @@ -1995,4 +2109,20 @@ public function getUserInterests(string $userID, ?int $limit = null): StreamResp $requestData = null; return StreamResponse::fromJson($this->makeRequest('GET', $path, $queryParams, $requestData), GeneratedModels\GetUserInterestsResponse::class); } + /** + * Adds or updates interest tags on a user with explicit ranking weights. Tags set this way rank above the tags computed from the user's reactions at equal weight and are never overwritten by them. Client-side callers may only manage their own interests; server-side callers may manage any user. Returns the user's full interest list after the write. + * + * @param string $userID + * @param GeneratedModels\UpsertUserInterestsRequest $requestData + * @return StreamResponse + * @throws StreamException + */ + public function upsertUserInterests(string $userID, GeneratedModels\UpsertUserInterestsRequest $requestData): StreamResponse { + $path = '/api/v2/feeds/users/{user_id}/interests'; + $path = str_replace('{user_id}', (string) $userID, $path); + + $queryParams = []; + // Use the provided request data array directly + return StreamResponse::fromJson($this->makeRequest('PUT', $path, $queryParams, $requestData), GeneratedModels\UpsertUserInterestsResponse::class); + } } diff --git a/src/Generated/VideoTrait.php b/src/Generated/VideoTrait.php index a53b00a..f22f60c 100644 --- a/src/Generated/VideoTrait.php +++ b/src/Generated/VideoTrait.php @@ -58,6 +58,20 @@ public function queryCallMembers(GeneratedModels\QueryCallMembersRequest $reques // Use the provided request data array directly return StreamResponse::fromJson($this->makeRequest('POST', $path, $queryParams, $requestData), GeneratedModels\QueryCallMembersResponse::class); } + /** + * Returns a call's ring attempts, newest first. A session can be rung more than once, and the session-level accepted_by / rejected_by / missed_by maps flatten every ring together; an attempt says which ring a user acted on, which devices it reached, and who settled it and why. Pass call_session_id to limit the read to one session. + * + * @param GeneratedModels\QueryCallRingAttemptsRequest $requestData + * @return StreamResponse + * @throws StreamException + */ + public function queryCallRingAttempts(GeneratedModels\QueryCallRingAttemptsRequest $requestData): StreamResponse { + $path = '/api/v2/video/call/ring_attempts'; + + $queryParams = []; + // Use the provided request data array directly + return StreamResponse::fromJson($this->makeRequest('POST', $path, $queryParams, $requestData), GeneratedModels\QueryCallRingAttemptsResponse::class); + } /** * * @param GeneratedModels\QueryCallStatsRequest $requestData diff --git a/src/Generated/Webhook.php b/src/Generated/Webhook.php index f72aa43..85b67e5 100644 --- a/src/Generated/Webhook.php +++ b/src/Generated/Webhook.php @@ -23,9 +23,12 @@ use GetStream\GeneratedModels\AsyncBulkImageModerationEvent; use GetStream\GeneratedModels\AsyncExportChannelsEvent; use GetStream\GeneratedModels\AsyncExportErrorEvent; +use GetStream\GeneratedModels\AsyncExportLabelResultsEvent; use GetStream\GeneratedModels\AsyncExportModerationLogsEvent; use GetStream\GeneratedModels\AsyncExportReviewQueueEvent; use GetStream\GeneratedModels\AsyncExportUsersEvent; +use GetStream\GeneratedModels\AsyncImportErrorEvent; +use GetStream\GeneratedModels\AsyncImportSuccessEvent; use GetStream\GeneratedModels\BlockedUserEvent; use GetStream\GeneratedModels\BookmarkAddedEvent; use GetStream\GeneratedModels\BookmarkDeletedEvent; @@ -63,6 +66,7 @@ use GetStream\GeneratedModels\CallRecordingStoppedEvent; use GetStream\GeneratedModels\CallRejectedEvent; use GetStream\GeneratedModels\CallRingEvent; +use GetStream\GeneratedModels\CallRingSettledEvent; use GetStream\GeneratedModels\CallRtmpBroadcastFailedEvent; use GetStream\GeneratedModels\CallRtmpBroadcastStartedEvent; use GetStream\GeneratedModels\CallRtmpBroadcastStoppedEvent; @@ -96,6 +100,7 @@ use GetStream\GeneratedModels\ClosedCaptionEvent; use GetStream\GeneratedModels\CommentAddedEvent; use GetStream\GeneratedModels\CommentDeletedEvent; +use GetStream\GeneratedModels\CommentFeedbackEvent; use GetStream\GeneratedModels\CommentReactionAddedEvent; use GetStream\GeneratedModels\CommentReactionDeletedEvent; use GetStream\GeneratedModels\CommentReactionUpdatedEvent; @@ -226,6 +231,7 @@ class Webhook public const EVENT_TYPE_CALL_RECORDING_STOPPED = 'call.recording_stopped'; public const EVENT_TYPE_CALL_REJECTED = 'call.rejected'; public const EVENT_TYPE_CALL_RING = 'call.ring'; + public const EVENT_TYPE_CALL_RING_SETTLED = 'call.ring_settled'; public const EVENT_TYPE_CALL_RTMP_BROADCAST_FAILED = 'call.rtmp_broadcast_failed'; public const EVENT_TYPE_CALL_RTMP_BROADCAST_STARTED = 'call.rtmp_broadcast_started'; public const EVENT_TYPE_CALL_RTMP_BROADCAST_STOPPED = 'call.rtmp_broadcast_stopped'; @@ -263,6 +269,8 @@ class Webhook public const EVENT_TYPE_EXPORT_BULK_IMAGE_MODERATION_SUCCESS = 'export.bulk_image_moderation.success'; public const EVENT_TYPE_EXPORT_CHANNELS_ERROR = 'export.channels.error'; public const EVENT_TYPE_EXPORT_CHANNELS_SUCCESS = 'export.channels.success'; + public const EVENT_TYPE_EXPORT_LABEL_RESULTS_ERROR = 'export.label_results.error'; + public const EVENT_TYPE_EXPORT_LABEL_RESULTS_SUCCESS = 'export.label_results.success'; public const EVENT_TYPE_EXPORT_MODERATION_LOGS_ERROR = 'export.moderation_logs.error'; public const EVENT_TYPE_EXPORT_MODERATION_LOGS_SUCCESS = 'export.moderation_logs.success'; public const EVENT_TYPE_EXPORT_REVIEW_QUEUE_ERROR = 'export.review_queue.error'; @@ -288,6 +296,7 @@ class Webhook public const EVENT_TYPE_FEEDS_BOOKMARK_FOLDER_UPDATED = 'feeds.bookmark_folder.updated'; public const EVENT_TYPE_FEEDS_COMMENT_ADDED = 'feeds.comment.added'; public const EVENT_TYPE_FEEDS_COMMENT_DELETED = 'feeds.comment.deleted'; + public const EVENT_TYPE_FEEDS_COMMENT_FEEDBACK = 'feeds.comment.feedback'; public const EVENT_TYPE_FEEDS_COMMENT_REACTION_ADDED = 'feeds.comment.reaction.added'; public const EVENT_TYPE_FEEDS_COMMENT_REACTION_DELETED = 'feeds.comment.reaction.deleted'; public const EVENT_TYPE_FEEDS_COMMENT_REACTION_UPDATED = 'feeds.comment.reaction.updated'; @@ -308,6 +317,8 @@ class Webhook public const EVENT_TYPE_FEEDS_NOTIFICATION_FEED_UPDATED = 'feeds.notification_feed.updated'; public const EVENT_TYPE_FEEDS_STORIES_FEED_UPDATED = 'feeds.stories_feed.updated'; public const EVENT_TYPE_FLAG_UPDATED = 'flag.updated'; + public const EVENT_TYPE_IMPORT_ERROR = 'import.error'; + public const EVENT_TYPE_IMPORT_SUCCESS = 'import.success'; public const EVENT_TYPE_INGRESS_ERROR = 'ingress.error'; public const EVENT_TYPE_INGRESS_STARTED = 'ingress.started'; public const EVENT_TYPE_INGRESS_STOPPED = 'ingress.stopped'; @@ -468,6 +479,7 @@ private static function getEventClass(string $eventType): ?string 'call.recording_stopped' => CallRecordingStoppedEvent::class, 'call.rejected' => CallRejectedEvent::class, 'call.ring' => CallRingEvent::class, + 'call.ring_settled' => CallRingSettledEvent::class, 'call.rtmp_broadcast_failed' => CallRtmpBroadcastFailedEvent::class, 'call.rtmp_broadcast_started' => CallRtmpBroadcastStartedEvent::class, 'call.rtmp_broadcast_stopped' => CallRtmpBroadcastStoppedEvent::class, @@ -505,6 +517,8 @@ private static function getEventClass(string $eventType): ?string 'export.bulk_image_moderation.success' => AsyncBulkImageModerationEvent::class, 'export.channels.error' => AsyncExportErrorEvent::class, 'export.channels.success' => AsyncExportChannelsEvent::class, + 'export.label_results.error' => AsyncExportErrorEvent::class, + 'export.label_results.success' => AsyncExportLabelResultsEvent::class, 'export.moderation_logs.error' => AsyncExportErrorEvent::class, 'export.moderation_logs.success' => AsyncExportModerationLogsEvent::class, 'export.review_queue.error' => AsyncExportErrorEvent::class, @@ -530,6 +544,7 @@ private static function getEventClass(string $eventType): ?string 'feeds.bookmark_folder.updated' => BookmarkFolderUpdatedEvent::class, 'feeds.comment.added' => CommentAddedEvent::class, 'feeds.comment.deleted' => CommentDeletedEvent::class, + 'feeds.comment.feedback' => CommentFeedbackEvent::class, 'feeds.comment.reaction.added' => CommentReactionAddedEvent::class, 'feeds.comment.reaction.deleted' => CommentReactionDeletedEvent::class, 'feeds.comment.reaction.updated' => CommentReactionUpdatedEvent::class, @@ -550,6 +565,8 @@ private static function getEventClass(string $eventType): ?string 'feeds.notification_feed.updated' => NotificationFeedUpdatedEvent::class, 'feeds.stories_feed.updated' => StoriesFeedUpdatedEvent::class, 'flag.updated' => FlagUpdatedEvent::class, + 'import.error' => AsyncImportErrorEvent::class, + 'import.success' => AsyncImportSuccessEvent::class, 'ingress.error' => IngressErrorEvent::class, 'ingress.started' => IngressStartedEvent::class, 'ingress.stopped' => IngressStoppedEvent::class, diff --git a/src/GeneratedModels/AIAudioConfigRequest.php b/src/GeneratedModels/AIAudioConfigRequest.php index ed2ec41..5431f84 100644 --- a/src/GeneratedModels/AIAudioConfigRequest.php +++ b/src/GeneratedModels/AIAudioConfigRequest.php @@ -6,10 +6,12 @@ class AIAudioConfigRequest extends BaseModel { public function __construct( - public ?string $profile = null, + public ?string $profile = null, // Bodyguard credentials profile to classify transcripts with. Applies to the NLP engine only; ignored when LLM configurability is enabled. Empty falls back to the app-pinned profile, then the organization's top-level credentials /** @var array|null */ #[ArrayOf(BodyguardRule::class)] - public ?array $rules = null, + public ?array $rules = null, // Deprecated pre-split rule list. Still the live config while no engine config exists; once one does it is kept as a fallback for whichever engine has none of its own + public ?AITextConfig $aiTextConfig = null, + public ?LLMConfig $llmConfig = null, ) { } diff --git a/src/GeneratedModels/AIAudioConfigResponse.php b/src/GeneratedModels/AIAudioConfigResponse.php index 9e13529..6e6601d 100644 --- a/src/GeneratedModels/AIAudioConfigResponse.php +++ b/src/GeneratedModels/AIAudioConfigResponse.php @@ -6,11 +6,13 @@ class AIAudioConfigResponse extends BaseModel { public function __construct( - public ?bool $enabled = null, - public ?string $profile = null, + public ?bool $enabled = null, // Whether the engine selected by the application's LLM configurability flag has a rule that does something. Derived, not stored + public ?string $profile = null, // Bodyguard credentials profile transcripts are classified with. Applies to the NLP engine only /** @var array|null */ #[ArrayOf(BodyguardRule::class)] - public ?array $rules = null, + public ?array $rules = null, // The active engine's rules, flattened into the pre-split shape for clients that predate the per-engine configs. This is the whole config for a policy that has no per-engine config stored + public ?AITextConfig $aiTextConfig = null, + public ?LLMConfig $llmConfig = null, ) { } diff --git a/src/GeneratedModels/AIVideoConfig.php b/src/GeneratedModels/AIVideoConfig.php index 48b7748..40ba94c 100644 --- a/src/GeneratedModels/AIVideoConfig.php +++ b/src/GeneratedModels/AIVideoConfig.php @@ -11,7 +11,6 @@ public function __construct( /** @var array|null */ #[ArrayOf(AWSRekognitionRule::class)] public ?array $rules = null, - public ?string $provider = null, ) { } diff --git a/src/GeneratedModels/APIError.php b/src/GeneratedModels/APIError.php index 6654dff..69d0184 100644 --- a/src/GeneratedModels/APIError.php +++ b/src/GeneratedModels/APIError.php @@ -14,6 +14,7 @@ public function __construct( public ?string $moreInfo = null, // URL with additional information public ?array $details = null, // Additional error-specific information public ?bool $unrecoverable = null, // Flag that indicates if the error is unrecoverable, requests that return unrecoverable errors should not be retried, this error only applies to the request that caused it + public ?int $cooldownRemainingMs = null, // Milliseconds until the user's slow mode cool down period ends. Only set on code 60 (cool down) errors ) { } diff --git a/src/GeneratedModels/ActivityResponse.php b/src/GeneratedModels/ActivityResponse.php index 6304735..d563e3c 100644 --- a/src/GeneratedModels/ActivityResponse.php +++ b/src/GeneratedModels/ActivityResponse.php @@ -44,6 +44,7 @@ public function __construct( public ?ModerationV2Response $moderation = null, public ?string $moderationAction = null, public ?int $commentCount = null, // Number of comments on the activity + public ?int $topLevelCommentCount = null, // Number of top-level comments (comments directly on the activity, excluding replies). Only returned by GetActivity when include_top_level_comment_count=true; never set on feed reads or events. Same status/deletion rules as comment_count; not adjusted per viewer. public ?int $bookmarkCount = null, // Number of bookmarks on the activity public ?int $shareCount = null, // Number of times the activity was shared public ?int $reactionCount = null, // Number of reactions to the activity diff --git a/src/GeneratedModels/ActivitySelectorConfig.php b/src/GeneratedModels/ActivitySelectorConfig.php index a90f63a..924bc18 100644 --- a/src/GeneratedModels/ActivitySelectorConfig.php +++ b/src/GeneratedModels/ActivitySelectorConfig.php @@ -15,6 +15,8 @@ public function __construct( public ?string $cutoffWindow = null, // Flexible relative time window for activity selection (e.g., '1h', '3d', '1y'). Activities older than this duration will be filtered out. Cannot be used together with cutoff_time public ?int $minPopularity = null, // Minimum popularity threshold. For the 'popular' selector, omit to use the default (5); values below 1 are rejected public ?FeedGroupScope $feedGroups = null, + public ?int $rankingCandidateLimit = null, // Maximum number of candidate activities this selector contributes to a ranked feed (1-1000). Omit to use the default ranking buffer. Only supported on the popular, proximity, interest and query selectors, and ignored on feeds without ranking + public ?int $timeBudgetMs = null, // Maximum time in milliseconds this selector may take (25-5000). A selector that runs over its budget is dropped from that read instead of failing it, and stays out for the rest of that pagination session. The budget can only tighten the default, never extend it. Omit to use the default. Only supported on the popular, proximity, interest, query and follow_suggestion selectors public ?object $params = null, ) { } diff --git a/src/GeneratedModels/ActivitySelectorConfigResponse.php b/src/GeneratedModels/ActivitySelectorConfigResponse.php index bc1e540..853cf6f 100644 --- a/src/GeneratedModels/ActivitySelectorConfigResponse.php +++ b/src/GeneratedModels/ActivitySelectorConfigResponse.php @@ -15,6 +15,8 @@ public function __construct( public ?string $cutoffWindow = null, // Flexible relative time window for activity selection (e.g., '1h', '3d', '1y') public ?int $minPopularity = null, // Minimum popularity threshold. For the 'popular' selector, values below 1 are normalized to the default (5) at read time. public ?FeedGroupScope $feedGroups = null, + public ?int $rankingCandidateLimit = null, // Maximum number of candidate activities this selector contributes to a ranked feed + public ?int $timeBudgetMs = null, // Maximum time in milliseconds this selector may take before it is dropped from the read public ?object $params = null, // Generic params for selector-specific configuration ) { } diff --git a/src/GeneratedModels/AddActivityRequest.php b/src/GeneratedModels/AddActivityRequest.php index 3938b1a..84cbeb8 100644 --- a/src/GeneratedModels/AddActivityRequest.php +++ b/src/GeneratedModels/AddActivityRequest.php @@ -38,6 +38,7 @@ public function __construct( public ?bool $enrichOwnFields = null, public ?bool $forceModeration = null, public ?bool $createUsers = null, + public ?bool $skipExisting = null, ) { } diff --git a/src/GeneratedModels/AddActivityResponse.php b/src/GeneratedModels/AddActivityResponse.php index 8146267..c27acdf 100644 --- a/src/GeneratedModels/AddActivityResponse.php +++ b/src/GeneratedModels/AddActivityResponse.php @@ -8,6 +8,7 @@ class AddActivityResponse extends BaseModel public function __construct( public ?ActivityResponse $activity = null, public ?int $mentionNotificationsCreated = null, // Number of mention notification activities created for mentioned users + public ?array $skippedExisting = null, // Contains the activity ID when skip_existing is true and the activity already existed, so it was left unchanged. public ?string $duration = null, ) { } diff --git a/src/GeneratedModels/AddCommentReactionResponse.php b/src/GeneratedModels/AddCommentReactionResponse.php index d5b0d30..22c2b58 100644 --- a/src/GeneratedModels/AddCommentReactionResponse.php +++ b/src/GeneratedModels/AddCommentReactionResponse.php @@ -13,6 +13,9 @@ public function __construct( public ?bool $notificationAccepted = null, // Whether notification creation was accepted for asynchronous processing public ?string $notificationTaskID = null, // ID of the async notification-creation task; poll GET /tasks/{id} for its status public ?ActivityResponse $referenceActivity = null, + public ?string $outcome = null, // What this write did to the user's reaction on this target. One of: created, replaced, unchanged. 'created' means a new reaction was written and nothing was replaced; 'replaced' means enforce_unique removed one or more of the user's other reaction types; 'unchanged' means the user already held this reaction type (its custom data may still have been updated). Without enforce_unique a user can hold several reaction types on one target, so 'created' then means 'this reaction type was newly added', not 'the user's first reaction on this target'. + public ?string $previousReactionType = null, // The reaction type this write replaced, or null when nothing was replaced. Non-null exactly when outcome is 'replaced'. If enforce_unique removed several reactions — possible only for data created before enforce_unique was adopted — this is the most recently created one. + public ?int $counterDelta = null, // The change this write made to the number of reactions the user holds on this target: 1 when outcome is 'created', 0 when it is 'replaced' or 'unchanged'. These endpoints never return -1; a successful delete-reaction call is what decrements the count. With enforce_unique this is the delta of the user's reaction on the target; without it, the delta of reactions of this type. public ?string $duration = null, // Duration of the request ) { } diff --git a/src/GeneratedModels/AddReactionResponse.php b/src/GeneratedModels/AddReactionResponse.php index 32d16bf..edaebed 100644 --- a/src/GeneratedModels/AddReactionResponse.php +++ b/src/GeneratedModels/AddReactionResponse.php @@ -13,6 +13,9 @@ public function __construct( public ?bool $notificationAccepted = null, // Whether notification creation was accepted for asynchronous processing public ?string $notificationTaskID = null, // ID of the async notification-creation task; poll GET /tasks/{id} for its status public ?ActivityResponse $referenceActivity = null, + public ?string $outcome = null, // What this write did to the user's reaction on this target. One of: created, replaced, unchanged. 'created' means a new reaction was written and nothing was replaced; 'replaced' means enforce_unique removed one or more of the user's other reaction types; 'unchanged' means the user already held this reaction type (its custom data may still have been updated). Without enforce_unique a user can hold several reaction types on one target, so 'created' then means 'this reaction type was newly added', not 'the user's first reaction on this target'. + public ?string $previousReactionType = null, // The reaction type this write replaced, or null when nothing was replaced. Non-null exactly when outcome is 'replaced'. If enforce_unique removed several reactions — possible only for data created before enforce_unique was adopted — this is the most recently created one. + public ?int $counterDelta = null, // The change this write made to the number of reactions the user holds on this target: 1 when outcome is 'created', 0 when it is 'replaced' or 'unchanged'. These endpoints never return -1; a successful delete-reaction call is what decrements the count. With enforce_unique this is the delta of the user's reaction on the target; without it, the delta of reactions of this type. public ?string $duration = null, ) { } diff --git a/src/GeneratedModels/AggregationConfig.php b/src/GeneratedModels/AggregationConfig.php index 7d45d1d..bbfff28 100644 --- a/src/GeneratedModels/AggregationConfig.php +++ b/src/GeneratedModels/AggregationConfig.php @@ -7,6 +7,7 @@ class AggregationConfig extends BaseModel { public function __construct( public ?string $format = null, // Format for activity aggregation + public ?int $groupSize = null, // Maximum number of activities kept in each aggregated group. Omit to use the default: 15 for apps migrated from Feeds v2 or created on or after 2026-10-11, 100 otherwise. Must be between 1 and 100 when set. public ?string $scoreStrategy = null, // Strategy for computing aggregated group scores from member activity scores when ranking is enabled. Valid values: sum, max, avg public ?string $activitiesSort = null, // Order of member activities inside each aggregated group for non-stories feeds: created_at_desc (newest first, default) or created_at_asc (oldest first). Stories feeds ignore this and always use oldest first. ) { diff --git a/src/GeneratedModels/AnalyzeRequest.php b/src/GeneratedModels/AnalyzeRequest.php index 0649eac..fcf334a 100644 --- a/src/GeneratedModels/AnalyzeRequest.php +++ b/src/GeneratedModels/AnalyzeRequest.php @@ -15,6 +15,7 @@ public function __construct( public ?\DateTime $contentPublishedAt = null, // Original timestamp when the content was produced. Used as the `published_at` timestamp on per-content log entries that surface in `matched_contents` on aggregation-rule webhooks. public ?array $contentIds = null, // Optional map from a content label (either a `texts` key or an `image:` multipart label) to a caller-supplied per-instance identifier. Echoed on per-field verdicts and surfaced in `matched_contents` when an aggregation rule fires. public ?bool $asyncResponse = null, // When true, the response carries no verdicts (status `pending`) and per-modality results arrive via `moderation.text_analysis.complete` and `moderation.image_analysis.complete` webhooks. Image moderation runs on a background worker; text moderation runs synchronously and is then delivered via webhook. + public ?string $countryCode = null, // ISO 3166-1 alpha-2 country the content is aimed at (e.g. US, DE). Forwarded to the AI text provider as country context so it can resolve words whose meaning changes between countries. public ?string $userID = null, public ?UserRequest $user = null, // User request object ) { diff --git a/src/GeneratedModels/AppResponseFields.php b/src/GeneratedModels/AppResponseFields.php index 9301681..d69d267 100644 --- a/src/GeneratedModels/AppResponseFields.php +++ b/src/GeneratedModels/AppResponseFields.php @@ -3,11 +3,14 @@ declare(strict_types=1); namespace GetStream\GeneratedModels; +/** + * A type representing the app settings. + */ class AppResponseFields extends BaseModel { public function __construct( public ?int $id = null, - public ?string $name = null, + public ?string $name = null, // The name of the app. public ?string $organization = null, public ?string $placement = null, public ?PushNotificationFields $pushNotifications = null, @@ -29,10 +32,10 @@ public function __construct( public ?bool $multiTenantEnabled = null, public ?bool $allowMultiUserDevices = null, public ?bool $imageModerationEnabled = null, - public ?bool $asyncUrlEnrichEnabled = null, + public ?bool $asyncUrlEnrichEnabled = null, // A boolean value determining if async url enrichment is enabled. public ?array $imageModerationLabels = null, public ?array $allowedFlagReasons = null, - public ?bool $autoTranslationEnabled = null, + public ?bool $autoTranslationEnabled = null, // A boolean value determining if auto translation is enabled. public ?string $beforeMessageSendHookUrl = null, public ?int $beforeMessageSendHookAttemptTimeoutMs = null, public ?string $customActionHandlerUrl = null, @@ -78,6 +81,7 @@ public function __construct( public ?bool $memberCustomOnMessagesEnabled = null, public ?bool $memberCustomOnMentionedUsersEnabled = null, public ?bool $memberCustomOnTypingEventsEnabled = null, + public ?bool $beforeMessageSendHookSystemMessages = null, ) { } diff --git a/src/GeneratedModels/AppealItemResponse.php b/src/GeneratedModels/AppealItemResponse.php index 8e512d7..27ceacb 100644 --- a/src/GeneratedModels/AppealItemResponse.php +++ b/src/GeneratedModels/AppealItemResponse.php @@ -23,7 +23,7 @@ public function __construct( #[ArrayOf(ActionLogResponse::class)] public ?array $actions = null, // Full chronological history of all moderation actions on the review queue item public ?string $recommendedAction = null, // Action recommended by the automated moderation system (e.g. flag, remove, shadow) - public ?string $channelCid = null, // CID of the channel the entity belongs to, if applicable + public ?string $channelCid = null, // CID of the channel the entity belongs to (content appeals), or of the channel ban being appealed (stream:user appeals). Empty for a global ban appeal. public ?array $flagTypes = null, // Types of flags applied to the entity (e.g. user_report, bodyguard) public ?array $flagLabels = null, // Classification labels from automated and manual review /** @var array|null */ @@ -33,6 +33,8 @@ public function __construct( public ?string $aiTextSeverity = null, // Text severity level assigned by the AI provider public ?string $configKey = null, // Moderation policy key that was applied public ?string $reviewQueueItemID = null, // ID of the review queue item linked to this appeal, if the appeal was submitted with one + public ?array $languages = null, // Detected languages in the content + public ?string $appealReasonLanguage = null, // Detected language of the appeal_reason text itself ) { } diff --git a/src/GeneratedModels/AppealRequest.php b/src/GeneratedModels/AppealRequest.php index 030c18f..3ececad 100644 --- a/src/GeneratedModels/AppealRequest.php +++ b/src/GeneratedModels/AppealRequest.php @@ -11,6 +11,7 @@ public function __construct( public ?string $appealReason = null, // Explanation for why the content is being appealed public ?array $attachments = null, // Array of Attachment URLs(e.g., images) public ?string $reviewQueueItemID = null, // ID of the review queue item (flagged message) that triggered the ban. Applicable only for user ban appeals. + public ?string $channelCid = null, // CID of the channel ban being appealed. Only used when entity_type is stream:user; omit to appeal the global ban. public ?string $userID = null, public ?UserRequest $user = null, // User request object ) { diff --git a/src/GeneratedModels/AsyncExportLabelResultsEvent.php b/src/GeneratedModels/AsyncExportLabelResultsEvent.php new file mode 100644 index 0000000..aa9cccd --- /dev/null +++ b/src/GeneratedModels/AsyncExportLabelResultsEvent.php @@ -0,0 +1,22 @@ +|null */ + #[MapOf(RingSettledTarget::class)] + public ?array $targets = null, // Final state of every rung user, keyed by user ID + ) { + } + + // 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/CallSettingsRequest.php b/src/GeneratedModels/CallSettingsRequest.php index 30289d2..7db7338 100644 --- a/src/GeneratedModels/CallSettingsRequest.php +++ b/src/GeneratedModels/CallSettingsRequest.php @@ -23,6 +23,7 @@ public function __construct( public ?SessionSettingsRequest $session = null, public ?IngressSettingsRequest $ingress = null, public ?EncryptionSettingsRequest $encryption = null, + public ?LifecycleSettingsRequest $lifecycle = null, ) { } diff --git a/src/GeneratedModels/CallSettingsResponse.php b/src/GeneratedModels/CallSettingsResponse.php index 817a183..a6c43a1 100644 --- a/src/GeneratedModels/CallSettingsResponse.php +++ b/src/GeneratedModels/CallSettingsResponse.php @@ -23,6 +23,7 @@ public function __construct( public ?SessionSettingsResponse $session = null, public ?IngressSettingsResponse $ingress = null, public ?EncryptionSettingsResponse $encryption = null, // EncryptionSettings is the payload for end-to-end encryption settings + public ?LifecycleSettingsResponse $lifecycle = null, // LifecycleSettings is the payload for call lifecycle settings ) { } diff --git a/src/GeneratedModels/CastPollVoteRequest.php b/src/GeneratedModels/CastPollVoteRequest.php index 1923c3b..01302d6 100644 --- a/src/GeneratedModels/CastPollVoteRequest.php +++ b/src/GeneratedModels/CastPollVoteRequest.php @@ -7,6 +7,8 @@ class CastPollVoteRequest extends BaseModel { public function __construct( public ?VoteData $vote = null, + public ?string $configKey = null, // Key of the moderation configuration to use. Server-side only. + public ?string $configTeam = null, // Team associated with the configuration. Server-side only. public ?string $userID = null, public ?UserRequest $user = null, // User request object ) { diff --git a/src/GeneratedModels/ChannelBatchUpdateRequest.php b/src/GeneratedModels/ChannelBatchUpdateRequest.php index f5e1e2a..cc179be 100644 --- a/src/GeneratedModels/ChannelBatchUpdateRequest.php +++ b/src/GeneratedModels/ChannelBatchUpdateRequest.php @@ -15,6 +15,7 @@ public function __construct( public ?object $customSet = null, // `updateData` only. Merges these keys into each channel's existing custom object, leaving every other custom key untouched. Keys are dot-paths, so `a.b` sets key `b` inside object `a` (the parent object must already exist). Cannot be combined with `data.custom` public ?array $customUnset = null, // `updateData` only. Deletes these keys from each channel's existing custom object, leaving every other custom key untouched. Keys are dot-paths; deleting a key that does not exist is a no-op. Cannot be combined with `data.custom` public ?\DateTime $hideHistoryBefore = null, // Required with the `addMembersHideHistory` operation, and rejected with every other operation including `addMembers`. Hides each matched channel's history before this time from the members the operation adds. Members that already belong to a matched channel are never affected. Must be in RFC3339 format (e.g., "2024-01-01T10:00:00Z") and in the past. + public ?bool $synchronous = null, // For updateData only. Requires a root cids $eq or $in filter with at most 100 CIDs and no root $or/$and. Split larger selections into requests of at most 100 CIDs. A success_channels_count response means the database update completed; a task_id response means it was queued and must be polled, including on older API nodes. ) { } diff --git a/src/GeneratedModels/ChannelBatchUpdateResponse.php b/src/GeneratedModels/ChannelBatchUpdateResponse.php index de90c04..30af9a0 100644 --- a/src/GeneratedModels/ChannelBatchUpdateResponse.php +++ b/src/GeneratedModels/ChannelBatchUpdateResponse.php @@ -3,14 +3,12 @@ declare(strict_types=1); namespace GetStream\GeneratedModels; -/** - * Basic response information - */ class ChannelBatchUpdateResponse extends BaseModel { public function __construct( - public ?string $taskID = null, - public ?string $duration = null, // Duration of the request in milliseconds + public ?string $taskID = null, // Present for asynchronous updates. Poll this task even if synchronous was requested: an older API node may have queued the update. + public ?string $duration = null, + public ?int $successChannelsCount = null, // Positive count of channels selected for a completed synchronous database update, not an affected-row count. Concurrent deletion may reduce the rows written. task_id is absent. ) { } diff --git a/src/GeneratedModels/ChannelConfig.php b/src/GeneratedModels/ChannelConfig.php index 0304e12..2e559f1 100644 --- a/src/GeneratedModels/ChannelConfig.php +++ b/src/GeneratedModels/ChannelConfig.php @@ -40,7 +40,7 @@ public function __construct( public ?int $partitionSize = null, public ?string $partitionTtl = null, public ?bool $skipLastMsgUpdateForSystemMsgs = null, - public ?string $pushLevel = null, + public ?string $pushLevel = null, // Sets the push notification level for a channel type public ?ChatPreferences $chatPreferences = null, public ?\DateTime $createdAt = null, public ?\DateTime $updatedAt = null, diff --git a/src/GeneratedModels/ChannelConfigWithInfo.php b/src/GeneratedModels/ChannelConfigWithInfo.php index 4761f7b..4d6afec 100644 --- a/src/GeneratedModels/ChannelConfigWithInfo.php +++ b/src/GeneratedModels/ChannelConfigWithInfo.php @@ -42,7 +42,7 @@ public function __construct( public ?int $partitionSize = null, public ?string $partitionTtl = null, public ?bool $skipLastMsgUpdateForSystemMsgs = null, - public ?string $pushLevel = null, + public ?string $pushLevel = null, // Sets the push notification level for a channel type public ?ChatPreferences $chatPreferences = null, /** @var array|null */ #[ArrayOf(Command::class)] diff --git a/src/GeneratedModels/ChannelOwnCapability.php b/src/GeneratedModels/ChannelOwnCapability.php index ffb85a8..956f548 100644 --- a/src/GeneratedModels/ChannelOwnCapability.php +++ b/src/GeneratedModels/ChannelOwnCapability.php @@ -4,7 +4,7 @@ namespace GetStream\GeneratedModels; /** - * All possibility of string to use + * An action that can be performed in a channel. */ class ChannelOwnCapability extends BaseModel { diff --git a/src/GeneratedModels/ChannelPushPreferencesResponse.php b/src/GeneratedModels/ChannelPushPreferencesResponse.php index 12bedea..dffc95f 100644 --- a/src/GeneratedModels/ChannelPushPreferencesResponse.php +++ b/src/GeneratedModels/ChannelPushPreferencesResponse.php @@ -3,12 +3,15 @@ declare(strict_types=1); namespace GetStream\GeneratedModels; +/** + * The push preference details. + */ class ChannelPushPreferencesResponse extends BaseModel { public function __construct( - public ?string $chatLevel = null, + public ?string $chatLevel = null, // The scope level of the push notifications. public ?ChatPreferencesResponse $chatPreferences = null, - public ?\DateTime $disabledUntil = null, + public ?\DateTime $disabledUntil = null, // If provided the notifications will be disabled until the set date. ) { } diff --git a/src/GeneratedModels/ChannelStateResponse.php b/src/GeneratedModels/ChannelStateResponse.php index 7d0de61..05b6e42 100644 --- a/src/GeneratedModels/ChannelStateResponse.php +++ b/src/GeneratedModels/ChannelStateResponse.php @@ -24,7 +24,7 @@ public function __construct( #[ArrayOf(ChannelMemberResponse::class)] public ?array $members = null, public ?ChannelMemberResponse $membership = null, - public ?ChannelPushPreferencesResponse $pushPreferences = null, + public ?ChannelPushPreferencesResponse $pushPreferences = null, // The push preference details. /** @var array|null */ #[ArrayOf(ThreadStateResponse::class)] public ?array $threads = null, @@ -37,6 +37,7 @@ public function __construct( /** @var array|null */ #[ArrayOf(SharedLocationResponseData::class)] public ?array $activeLiveLocations = null, + public ?int $cooldownRemainingMs = null, public ?string $duration = null, ) { } diff --git a/src/GeneratedModels/ChannelStateResponseFields.php b/src/GeneratedModels/ChannelStateResponseFields.php index 7408e46..c6f525b 100644 --- a/src/GeneratedModels/ChannelStateResponseFields.php +++ b/src/GeneratedModels/ChannelStateResponseFields.php @@ -24,7 +24,7 @@ public function __construct( #[ArrayOf(ChannelMemberResponse::class)] public ?array $members = null, // List of channel members public ?ChannelMemberResponse $membership = null, - public ?ChannelPushPreferencesResponse $pushPreferences = null, + public ?ChannelPushPreferencesResponse $pushPreferences = null, // The push preference details. /** @var array|null */ #[ArrayOf(ThreadStateResponse::class)] public ?array $threads = null, @@ -37,6 +37,7 @@ public function __construct( /** @var array|null */ #[ArrayOf(SharedLocationResponseData::class)] public ?array $activeLiveLocations = null, // Active live locations in the channel + public ?int $cooldownRemainingMs = null, // Milliseconds until the current user's slow mode cool down period ends. Only set on client-side get or create channel and get channel requests while the user is under cool down ) { } diff --git a/src/GeneratedModels/ChannelTypeConfig.php b/src/GeneratedModels/ChannelTypeConfig.php index ccf29c1..de45dca 100644 --- a/src/GeneratedModels/ChannelTypeConfig.php +++ b/src/GeneratedModels/ChannelTypeConfig.php @@ -46,7 +46,7 @@ public function __construct( public ?int $partitionSize = null, public ?string $partitionTtl = null, public ?bool $skipLastMsgUpdateForSystemMsgs = null, - public ?string $pushLevel = null, + public ?string $pushLevel = null, // Sets the push notification level for a channel type public ?ChatPreferences $chatPreferences = null, /** @var array|null */ #[ArrayOf(Command::class)] diff --git a/src/GeneratedModels/CheckGCPPubSubRequest.php b/src/GeneratedModels/CheckGCPPubSubRequest.php new file mode 100644 index 0000000..a101bd9 --- /dev/null +++ b/src/GeneratedModels/CheckGCPPubSubRequest.php @@ -0,0 +1,17 @@ +|null */ #[ArrayOf(TriggeredRuleResponse::class)] public ?array $triggeredRules = null, // All moderation rules triggered by this check (content, user, and call rules), with their resolved actions + /** @var array|null */ + #[ArrayOf(IntentScoreResponse::class)] + public ?array $intentScores = null, // Score (0-100) of each policy intent topic against this request's text, in policy order (test mode only; omitted when the policy has no topics or scoring failed) public ?string $duration = null, ) { } diff --git a/src/GeneratedModels/ClientEvent.php b/src/GeneratedModels/ClientEvent.php index e451ad6..bb9425f 100644 --- a/src/GeneratedModels/ClientEvent.php +++ b/src/GeneratedModels/ClientEvent.php @@ -28,6 +28,7 @@ public function __construct( public ?int $elapsedTime = null, // Milliseconds elapsed between the stage attempt's initiation and this event. public ?string $callSessionID = null, // Call session ID associated with the attempt. Required on every event except CoordinatorJoin initiation and CoordinatorJoin failure (where the call session is not yet established); optional on MediaDevicePermission. public ?string $joinReason = null, // Reason the client initiated the join. Optional on CoordinatorJoin events; empty when not provided. + public ?string $source = null, // Source of the coordinator join. Optional on CoordinatorJoin events; omitted when not provided. public ?string $sfuID = null, // Identifier of the SFU the client was attempting to connect to. Required on WSJoin and PeerConnectionConnect failure, and on FirstAudioFrame and FirstVideoFrame. public ?string $trackID = null, // Identifier of the media track the frame belongs to. Required on FirstVideoFrame; optional on FirstAudioFrame. public ?string $retryFailureReason = null, // Failure reason string. Required on CoordinatorJoin, CoordinatorWS, WSJoin, and PeerConnectionConnect failure. @@ -36,6 +37,8 @@ public function __construct( public ?string $screenShareStatus = null, // Screen-share permission status: INITIATED, FAILED, GRANTED, or NOT_INITIATED. Optional on MediaDevicePermission events. public ?string $microphonePermissionStatus = null, // Microphone permission status: INITIATED, FAILED, GRANTED, or NOT_INITIATED. Required on every MediaDevicePermission event. public ?string $cameraPermissionStatus = null, // Camera permission status: INITIATED, FAILED, GRANTED, or NOT_INITIATED. Required on every MediaDevicePermission event. + public ?string $leaveInitiator = null, // Source of the leave that aborted a join: user, app, callkit, remote_event, sdk_error, or unknown. Not validated against this set, so SDKs may report new values. Optional; sent on failure events. Maximum 32 characters. + public ?string $leaveReason = null, // Internal reason or triggering event for the leave that aborted a join. Optional; sent on failure events. Maximum 200 characters. ) { } diff --git a/src/GeneratedModels/CommentFeedbackEvent.php b/src/GeneratedModels/CommentFeedbackEvent.php new file mode 100644 index 0000000..89d7a35 --- /dev/null +++ b/src/GeneratedModels/CommentFeedbackEvent.php @@ -0,0 +1,23 @@ +|null */ #[ArrayOf(UserResponse::class)] public ?array $mentionedUsers = null, // Users mentioned in the comment + public ?bool $hidden = null, // Only true in QueryComments results filtered with hidden: true public ?string $status = null, // Status of the comment. One of: active, deleted, removed, hidden public ?\DateTime $createdAt = null, // When the comment was created public ?\DateTime $updatedAt = null, // When the comment was last updated diff --git a/src/GeneratedModels/ConfigOverridesRequest.php b/src/GeneratedModels/ConfigOverridesRequest.php index 14dcd8c..d56d9c6 100644 --- a/src/GeneratedModels/ConfigOverridesRequest.php +++ b/src/GeneratedModels/ConfigOverridesRequest.php @@ -23,7 +23,7 @@ public function __construct( public ?bool $userMessageReminders = null, // Enable/disable user message reminders public ?bool $sharedLocations = null, // Enable/disable shared locations public ?bool $countMessages = null, // Enable/disable message counting - public ?string $pushLevel = null, + public ?string $pushLevel = null, // Overrides the push notification level for this channel public ?ChatPreferences $chatPreferences = null, ) { } diff --git a/src/GeneratedModels/ConfigResponse.php b/src/GeneratedModels/ConfigResponse.php index 9d86514..7cba8df 100644 --- a/src/GeneratedModels/ConfigResponse.php +++ b/src/GeneratedModels/ConfigResponse.php @@ -20,6 +20,7 @@ public function __construct( public ?AIAudioConfigResponse $aiAudioConfig = null, public ?VelocityFilterConfig $velocityFilterConfig = null, public ?FloodConfig $floodConfig = null, + public ?IntentConfigResponse $intentConfig = null, public ?\DateTime $createdAt = null, // When the configuration was created public ?\DateTime $updatedAt = null, // When the configuration was last updated public ?VideoCallRuleConfig $videoCallRuleConfig = null, diff --git a/src/GeneratedModels/ContentCountryCodeParameters.php b/src/GeneratedModels/ContentCountryCodeParameters.php new file mode 100644 index 0000000..d007d18 --- /dev/null +++ b/src/GeneratedModels/ContentCountryCodeParameters.php @@ -0,0 +1,16 @@ +|null */ #[ArrayOf(PollOptionInput::class)] public ?array $options = null, - public ?string $votingVisibility = null, + public ?string $votingVisibility = null, // Represents the visibility of votes in a poll. public ?bool $enforceUniqueVote = null, // Indicates whether users can cast multiple votes public ?int $maxVotesAllowed = null, // Indicates the maximum amount of votes a user can cast public ?bool $allowUserSuggestedOptions = null, public ?bool $allowAnswers = null, // Indicates whether users can suggest user defined answers public ?bool $isClosed = null, // Indicates whether the poll is open for voting + public ?string $team = null, public ?object $custom = null, // Custom data for this object + public ?string $configKey = null, // Key of the moderation configuration to use. Server-side only. + public ?string $configTeam = null, // Team associated with the configuration. Server-side only. public ?string $userID = null, public ?UserRequest $user = null, // User request object ) { diff --git a/src/GeneratedModels/CreateReminderRequest.php b/src/GeneratedModels/CreateReminderRequest.php index 2788cb9..27b2262 100644 --- a/src/GeneratedModels/CreateReminderRequest.php +++ b/src/GeneratedModels/CreateReminderRequest.php @@ -7,6 +7,7 @@ class CreateReminderRequest extends BaseModel { public function __construct( public ?\DateTime $remindAt = null, + public ?\DateTime $expiresAt = null, public ?string $userID = null, public ?UserRequest $user = null, // User request object ) { diff --git a/src/GeneratedModels/DeleteFeedsRetentionPolicyRequest.php b/src/GeneratedModels/DeleteFeedsRetentionPolicyRequest.php new file mode 100644 index 0000000..c01cd63 --- /dev/null +++ b/src/GeneratedModels/DeleteFeedsRetentionPolicyRequest.php @@ -0,0 +1,15 @@ +|null */ + #[ArrayOf(InterestTagResponse::class)] + public ?array $interests = null, // Interest tags still set on the user + public ?string $duration = 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/DeliveryReceiptsResponse.php b/src/GeneratedModels/DeliveryReceiptsResponse.php index 25fe622..b63a424 100644 --- a/src/GeneratedModels/DeliveryReceiptsResponse.php +++ b/src/GeneratedModels/DeliveryReceiptsResponse.php @@ -3,6 +3,9 @@ declare(strict_types=1); namespace GetStream\GeneratedModels; +/** + * The settings for the delivery receipt events. + */ class DeliveryReceiptsResponse extends BaseModel { public function __construct( diff --git a/src/GeneratedModels/DeviceResponse.php b/src/GeneratedModels/DeviceResponse.php index 1493dc2..e868d8d 100644 --- a/src/GeneratedModels/DeviceResponse.php +++ b/src/GeneratedModels/DeviceResponse.php @@ -4,15 +4,15 @@ namespace GetStream\GeneratedModels; /** - * Response for Device + * An object representing a device which can receive push notifications. */ class DeviceResponse extends BaseModel { public function __construct( public ?string $pushProvider = null, // Push provider public ?string $pushProviderName = null, // Push provider name - public ?string $id = null, // Device ID - public ?\DateTime $createdAt = null, // Date/time of creation + public ?string $id = null, // The device identifier. + public ?\DateTime $createdAt = null, // The date when the device was created. public ?bool $disabled = null, // Whether device is disabled or not public ?string $disabledReason = null, // Reason explaining why device had been disabled public ?bool $voip = null, // When true the token is for Apple VoIP push notifications diff --git a/src/GeneratedModels/EnrichmentOptions.php b/src/GeneratedModels/EnrichmentOptions.php index 43c1ac8..ce2877e 100644 --- a/src/GeneratedModels/EnrichmentOptions.php +++ b/src/GeneratedModels/EnrichmentOptions.php @@ -28,6 +28,7 @@ public function __construct( public ?bool $skipOwnCapabilities = null, // Default: false. When true, skips computing and including capabilities for feeds. public ?bool $skipAll = null, // Default: false. When true, skips all enrichments. public ?bool $includeScoreVars = null, // Default: false. When true, includes score_vars in activity responses containing variable values used at ranking time. + public ?bool $includeRankingConfig = null, // Default: false. Server-side only. When true, the response includes ranking_config: the ranking configuration (from the feed view, or the feed group as fallback) used to rank this read. public ?bool $includeFlatActivities = null, // Controls the top-level flat 'activities' array for aggregated feeds. For new apps, defaults to false (excluded); set to true to include. For older apps, defaults to true (included) for backward compatibility; set to false to exclude. ) { } diff --git a/src/GeneratedModels/EntityCreatorResponse.php b/src/GeneratedModels/EntityCreatorResponse.php index af6e59d..8096be4 100644 --- a/src/GeneratedModels/EntityCreatorResponse.php +++ b/src/GeneratedModels/EntityCreatorResponse.php @@ -28,7 +28,7 @@ public function __construct( public ?bool $bypassModeration = null, public ?\DateTime $banExpires = null, public ?PushNotificationSettingsResponse $pushNotifications = null, - public ?PrivacySettingsResponse $privacySettings = null, + public ?PrivacySettingsResponse $privacySettings = null, // The privacy settings of the user. /** @var array|null */ #[ArrayOf(DeviceResponse::class)] public ?array $devices = null, diff --git a/src/GeneratedModels/EventHook.php b/src/GeneratedModels/EventHook.php index bd72aa8..877c3cd 100644 --- a/src/GeneratedModels/EventHook.php +++ b/src/GeneratedModels/EventHook.php @@ -23,11 +23,16 @@ public function __construct( public ?string $snsKey = null, public ?string $snsSecret = null, public ?string $snsRoleArn = null, + public ?string $gcpPubsubTopic = null, + public ?string $gcpPubsubAuthType = null, + public ?string $gcpPubsubRegion = null, public ?string $product = null, public ?bool $shouldSendCustomEvents = null, public ?int $timeoutMs = null, public ?AsyncModerationCallbackConfig $callback = null, public ?bool $snsEventBasedMessageGroupIDEnabled = null, + public ?bool $sqsEventBasedMessageGroupIDEnabled = null, + public ?bool $gcpPubsubEventBasedOrderingKeyEnabled = null, public ?WebhookFailoverConfig $failoverConfig = null, public ?\DateTime $createdAt = null, public ?\DateTime $updatedAt = null, diff --git a/src/GeneratedModels/FeedsNotificationComment.php b/src/GeneratedModels/FeedsNotificationComment.php index 6a1c283..aa5728c 100644 --- a/src/GeneratedModels/FeedsNotificationComment.php +++ b/src/GeneratedModels/FeedsNotificationComment.php @@ -12,6 +12,7 @@ public function __construct( /** @var array|null */ #[ArrayOf(Attachment::class)] public ?array $attachments = null, + public ?string $parentID = null, ) { } diff --git a/src/GeneratedModels/FeedsPolicyConfig.php b/src/GeneratedModels/FeedsPolicyConfig.php new file mode 100644 index 0000000..39fe122 --- /dev/null +++ b/src/GeneratedModels/FeedsPolicyConfig.php @@ -0,0 +1,16 @@ +|null */ #[ArrayOf(UserResponse::class)] public ?array $mentionedUsers = null, + public ?bool $hidden = null, public ?string $status = null, public ?\DateTime $createdAt = null, public ?\DateTime $updatedAt = null, diff --git a/src/GeneratedModels/FilterConfigResponse.php b/src/GeneratedModels/FilterConfigResponse.php index 879b929..0828125 100644 --- a/src/GeneratedModels/FilterConfigResponse.php +++ b/src/GeneratedModels/FilterConfigResponse.php @@ -10,7 +10,9 @@ public function __construct( public ?array $aiTextLabels = null, // AI text moderation labels available as filter values public ?array $aiImageLabels = null, // AI image moderation labels available as filter values. Reflects the app's effective image taxonomy: custom Bodyguard taxonomy when enabled, otherwise the standard L1 label set. public ?array $aiImageTaxonomy = null, // AI image moderation labels available as filter values, as a map of L1 label to its L2 sub-labels. Reflects the app's effective image taxonomy: custom Bodyguard taxonomy when enabled, otherwise the standard catalogue of the org's enabled image providers. + public ?array $aiImageOcrLabels = null, // Labels the image OCR pipeline can flag, available as filter values on the `label` field under the ai_image category. The app's LLM labels when LLM configurability is enabled, otherwise the AI text labels. OCR and image-classification labels share the `label` field, so a name present in both matches either. public ?array $configKeys = null, // Moderation config keys present in the queue, available as filter values + public ?array $ruleNames = null, // Names of the app's moderation rules, available as filter values on the `label` field when filtering rule-flagged content. Includes disabled rules, since items flagged before a rule was turned off still carry its name; excludes deleted ones. Scoped to the caller's teams on a multi-tenant app. Capped at 30 names, ordered by name, so an app above that cap is listed partially. public ?array $filterableCustomKeys = null, // The moderation_payload.custom keys the app has configured as review-queue filter chips (via moderation_dashboard_preferences.filterable_custom_keys). Discovery hint for the dashboard only — the filter accepts any custom key regardless of this list. ) { } diff --git a/src/GeneratedModels/FloodIdenticalRuleParameters.php b/src/GeneratedModels/FloodIdenticalRuleParameters.php index 284f274..01f42e4 100644 --- a/src/GeneratedModels/FloodIdenticalRuleParameters.php +++ b/src/GeneratedModels/FloodIdenticalRuleParameters.php @@ -9,6 +9,8 @@ public function __construct( public ?int $threshold = null, public ?string $timeWindow = null, public ?array $allowlist = null, + public ?bool $trackAcrossUsers = null, + public ?int $minTextLength = null, ) { } diff --git a/src/GeneratedModels/FloodSimilarRuleParameters.php b/src/GeneratedModels/FloodSimilarRuleParameters.php index c34e9cf..596b937 100644 --- a/src/GeneratedModels/FloodSimilarRuleParameters.php +++ b/src/GeneratedModels/FloodSimilarRuleParameters.php @@ -10,6 +10,7 @@ public function __construct( public ?string $timeWindow = null, public ?int $similarityDistance = null, public ?array $allowlist = null, + public ?int $minTextLength = null, ) { } diff --git a/src/GeneratedModels/FollowBatchRequest.php b/src/GeneratedModels/FollowBatchRequest.php index 3926348..254d8dd 100644 --- a/src/GeneratedModels/FollowBatchRequest.php +++ b/src/GeneratedModels/FollowBatchRequest.php @@ -11,6 +11,7 @@ public function __construct( public ?array $follows = null, // List of follow relationships to create public ?bool $enrichOwnFields = null, // If true, enriches the follow's source_feed and target_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. public ?bool $createUsers = null, // If true, auto-creates users referenced by source/target FIDs in the batch when they don't already exist. Server-side only. Defaults to false. This top-level field is the only supported batch/upsert create_users control. + public ?bool $async = null, // If true, the batch is queued as a background task, paced per app, and the response has empty follows and a task_id. Server-side only. Supported by the get-or-create endpoint (GetOrCreateFollows); FollowBatch rejects it. Async batches can apply out of order with other follow writes. Defaults to false. ) { } diff --git a/src/GeneratedModels/FollowBatchResponse.php b/src/GeneratedModels/FollowBatchResponse.php index b76b3b7..8eaba30 100644 --- a/src/GeneratedModels/FollowBatchResponse.php +++ b/src/GeneratedModels/FollowBatchResponse.php @@ -12,6 +12,7 @@ public function __construct( /** @var array|null */ #[ArrayOf(FollowResponse::class)] public ?array $created = null, // List of newly created follow relationships + public ?string $taskID = null, // ID of the background task when the request was sent with async: true public ?string $duration = null, ) { } diff --git a/src/GeneratedModels/FullUserResponse.php b/src/GeneratedModels/FullUserResponse.php index e9b40be..63fed89 100644 --- a/src/GeneratedModels/FullUserResponse.php +++ b/src/GeneratedModels/FullUserResponse.php @@ -23,7 +23,7 @@ public function __construct( public ?\DateTime $revokeTokensIssuedBefore = null, public ?\DateTime $deactivatedAt = null, public ?int $avgResponseTime = null, - public ?PrivacySettingsResponse $privacySettings = null, + public ?PrivacySettingsResponse $privacySettings = null, // The privacy settings of the user. /** @var array|null */ #[ArrayOf(DeviceResponse::class)] public ?array $devices = null, @@ -34,7 +34,8 @@ public function __construct( /** @var array|null */ #[ArrayOf(ChannelMute::class)] public ?array $channelMutes = null, - public ?int $unreadCount = null, + /** @deprecated */ + public ?int $unreadCount = null, // Deprecated: Use total_unread_count instead. public ?int $totalUnreadCount = null, public ?int $unreadChannels = null, public ?int $unreadThreads = null, diff --git a/src/GeneratedModels/GetApplicationResponse.php b/src/GeneratedModels/GetApplicationResponse.php index 4f5a3c8..371694e 100644 --- a/src/GeneratedModels/GetApplicationResponse.php +++ b/src/GeneratedModels/GetApplicationResponse.php @@ -9,7 +9,7 @@ class GetApplicationResponse extends BaseModel { public function __construct( - public ?AppResponseFields $app = null, + public ?AppResponseFields $app = null, // A type representing the app settings. public ?string $duration = null, // Duration of the request in milliseconds ) { } diff --git a/src/GeneratedModels/GetChannelTypeResponse.php b/src/GeneratedModels/GetChannelTypeResponse.php index b40b263..2f95a57 100644 --- a/src/GeneratedModels/GetChannelTypeResponse.php +++ b/src/GeneratedModels/GetChannelTypeResponse.php @@ -49,7 +49,7 @@ public function __construct( public ?int $partitionSize = null, public ?string $partitionTtl = null, public ?bool $skipLastMsgUpdateForSystemMsgs = null, - public ?string $pushLevel = null, + public ?string $pushLevel = null, // Sets the push notification level for a channel type public ?ChatPreferences $chatPreferences = null, /** @var array|null */ #[ArrayOf(Command::class)] diff --git a/src/GeneratedModels/GetCommentsResponse.php b/src/GeneratedModels/GetCommentsResponse.php index 182b0fd..330f062 100644 --- a/src/GeneratedModels/GetCommentsResponse.php +++ b/src/GeneratedModels/GetCommentsResponse.php @@ -10,6 +10,8 @@ public function __construct( #[ArrayOf(ThreadedCommentResponse::class)] public ?array $comments = null, // Threaded listing for the activity public ?string $sort = null, // Sort order used for the comments (first, last, top, best, controversial) + public ?int $commentCount = null, // Total number of comments on the object, including replies at every depth + public ?int $topLevelCommentCount = null, // Number of comments directly on the object, excluding replies. Independent of depth, replies_limit and id_around, and not adjusted per viewer. Only present when include_top_level_comment_count is set public ?string $next = null, public ?string $prev = null, public ?string $duration = null, diff --git a/src/GeneratedModels/GetFeedsRetentionPolicyResponse.php b/src/GeneratedModels/GetFeedsRetentionPolicyResponse.php new file mode 100644 index 0000000..b4fb549 --- /dev/null +++ b/src/GeneratedModels/GetFeedsRetentionPolicyResponse.php @@ -0,0 +1,22 @@ +|null */ + #[ArrayOf(FeedsRetentionPolicy::class)] + public ?array $policies = null, + public ?bool $enabled = null, + public ?string $duration = null, // Duration of the request in milliseconds + ) { + } + + // 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/GetFeedsRetentionPolicyRunsRequest.php b/src/GeneratedModels/GetFeedsRetentionPolicyRunsRequest.php new file mode 100644 index 0000000..3f563d3 --- /dev/null +++ b/src/GeneratedModels/GetFeedsRetentionPolicyRunsRequest.php @@ -0,0 +1,21 @@ +|null */ + #[ArrayOf(SortParamRequest::class)] + public ?array $sort = null, // Array of sort parameters + public ?int $limit = 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/GetFeedsRetentionPolicyRunsResponse.php b/src/GeneratedModels/GetFeedsRetentionPolicyRunsResponse.php new file mode 100644 index 0000000..7d1e805 --- /dev/null +++ b/src/GeneratedModels/GetFeedsRetentionPolicyRunsResponse.php @@ -0,0 +1,23 @@ +|null */ + #[ArrayOf(FeedsRetentionRunResponse::class)] + public ?array $runs = null, + public ?string $next = null, + public ?string $prev = null, + public ?string $duration = null, // Duration of the request in milliseconds + ) { + } + + // 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/GetOrCreateFeedRequest.php b/src/GeneratedModels/GetOrCreateFeedRequest.php index 963c65a..1cbc420 100644 --- a/src/GeneratedModels/GetOrCreateFeedRequest.php +++ b/src/GeneratedModels/GetOrCreateFeedRequest.php @@ -3,9 +3,6 @@ declare(strict_types=1); namespace GetStream\GeneratedModels; -/** - * Client request - */ class GetOrCreateFeedRequest extends BaseModel { public function __construct( @@ -21,6 +18,7 @@ public function __construct( public ?PagerRequest $followingPagination = null, public ?EnrichmentOptions $enrichmentOptions = null, // Options to skip specific enrichments to improve performance. Default is false (enrichments are included). Setting a field to true skips that enrichment. public ?FriendReactionsOptions $friendReactionsOptions = null, // Options to control fetching reactions from friends (users you follow or have mutual follows with). + public ?array $discardActors = null, // Feature-gated; not available for all apps. Request-scoped list of actor/user IDs whose activities are filtered from this GetOrCreateFeed response only. Merged (union) into the viewing user's in-memory blocked authors for this request; never persisted to blocked_users. Max: 1000. public ?int $limit = null, public ?string $next = null, public ?string $prev = null, diff --git a/src/GeneratedModels/GetOrCreateFeedResponse.php b/src/GeneratedModels/GetOrCreateFeedResponse.php index 7f5d205..5ef7fd8 100644 --- a/src/GeneratedModels/GetOrCreateFeedResponse.php +++ b/src/GeneratedModels/GetOrCreateFeedResponse.php @@ -3,9 +3,6 @@ declare(strict_types=1); namespace GetStream\GeneratedModels; -/** - * Basic response information - */ class GetOrCreateFeedResponse extends BaseModel { public function __construct( @@ -32,6 +29,8 @@ public function __construct( public ?PagerResponse $followersPagination = null, public ?PagerResponse $followingPagination = null, public ?NotificationStatusResponse $notificationStatus = null, + public ?array $degradedSelectors = null, // Activity selectors dropped from this read because they exceeded their time budget (see the time_budget_ms selector setting). Their activities are missing from this page, and they stay out for the rest of this pagination session. Omitted when every selector completed + public ?RankingConfig $rankingConfig = null, public ?bool $created = null, public ?string $next = null, public ?string $prev = null, diff --git a/src/GeneratedModels/GetUserInterestsResponse.php b/src/GeneratedModels/GetUserInterestsResponse.php index 2180dc4..f275d2c 100644 --- a/src/GeneratedModels/GetUserInterestsResponse.php +++ b/src/GeneratedModels/GetUserInterestsResponse.php @@ -4,14 +4,14 @@ namespace GetStream\GeneratedModels; /** - * User's computed interest tags ordered by descending count, then ascending tag name + * User's interest tags ordered by descending weight, then manually set tags before computed ones, then descending count, then ascending tag name */ class GetUserInterestsResponse extends BaseModel { public function __construct( /** @var array|null */ #[ArrayOf(InterestTagResponse::class)] - public ?array $interests = null, // Top-N interest tags sorted by descending count, then alphabetically by tag + public ?array $interests = null, // Interest tags sorted by descending weight, then manually set tags before computed ones, then descending count, then alphabetically by tag public ?string $duration = null, ) { } diff --git a/src/GeneratedModels/IntentConditionInfo.php b/src/GeneratedModels/IntentConditionInfo.php new file mode 100644 index 0000000..810b735 --- /dev/null +++ b/src/GeneratedModels/IntentConditionInfo.php @@ -0,0 +1,18 @@ +|null */ + #[ArrayOf(IntentTopicRequest::class)] + public ?array $topics = null, // Topics to classify conversation text against (max 20, labels must be unique) + ) { + } + + // 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/IntentConfigResponse.php b/src/GeneratedModels/IntentConfigResponse.php new file mode 100644 index 0000000..e2e6d91 --- /dev/null +++ b/src/GeneratedModels/IntentConfigResponse.php @@ -0,0 +1,17 @@ +|null */ + #[ArrayOf(IntentTopicResponse::class)] + public ?array $topics = null, // Topics conversation text is classified against + ) { + } + + // 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/IntentEvaluationInfo.php b/src/GeneratedModels/IntentEvaluationInfo.php new file mode 100644 index 0000000..f88092d --- /dev/null +++ b/src/GeneratedModels/IntentEvaluationInfo.php @@ -0,0 +1,21 @@ +|null */ + #[ArrayOf(IntentConditionInfo::class)] + public ?array $conditions = null, // One entry per `intent_rule` condition of the rule, flat conditions first, then group conditions. + public ?string $conversationID = null, // The analyzed conversation: the channel CID for chat, the object ID for feeds. + public ?int $messageCount = null, // Number of conversation messages sent to the model. + ) { + } + + // 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/IntentRuleParameters.php b/src/GeneratedModels/IntentRuleParameters.php new file mode 100644 index 0000000..76ae5e2 --- /dev/null +++ b/src/GeneratedModels/IntentRuleParameters.php @@ -0,0 +1,19 @@ +|null */ #[ArrayOf(MatchedContent::class)] public ?array $matchedContents = null, // Ordered list of contents whose verdicts contributed to an aggregation rule's threshold. Populated only for aggregation rules when callers supplied `content_ids`. + public ?IntentEvaluationInfo $intent = null, ) { } diff --git a/src/GeneratedModels/NotificationComment.php b/src/GeneratedModels/NotificationComment.php index 79808f4..e6c071a 100644 --- a/src/GeneratedModels/NotificationComment.php +++ b/src/GeneratedModels/NotificationComment.php @@ -6,12 +6,13 @@ class NotificationComment extends BaseModel { public function __construct( - public ?string $id = null, - public ?string $userID = null, - public ?string $comment = null, + public ?string $id = null, // The ID of the comment + public ?string $userID = null, // The ID of the user who wrote the comment + public ?string $comment = null, // The text of the comment /** @var array|null */ #[ArrayOf(Attachment::class)] - public ?array $attachments = null, + public ?array $attachments = null, // Attachments on the comment + public ?string $parentID = null, // The ID of the parent comment when this comment is a reply; omitted for top-level comments ) { } diff --git a/src/GeneratedModels/OwnUserResponse.php b/src/GeneratedModels/OwnUserResponse.php index 6a9f69b..4cd2706 100644 --- a/src/GeneratedModels/OwnUserResponse.php +++ b/src/GeneratedModels/OwnUserResponse.php @@ -23,8 +23,8 @@ public function __construct( public ?\DateTime $revokeTokensIssuedBefore = null, public ?\DateTime $deactivatedAt = null, public ?int $avgResponseTime = null, - public ?PushPreferencesResponse $pushPreferences = null, - public ?PrivacySettingsResponse $privacySettings = null, + public ?PushPreferencesResponse $pushPreferences = null, // The push preference details. + public ?PrivacySettingsResponse $privacySettings = null, // The privacy settings of the user. /** @var array|null */ #[ArrayOf(DeviceResponse::class)] public ?array $devices = null, @@ -35,7 +35,8 @@ public function __construct( /** @var array|null */ #[ArrayOf(ChannelMute::class)] public ?array $channelMutes = null, - public ?int $unreadCount = null, + /** @deprecated */ + public ?int $unreadCount = null, // Deprecated: Use total_unread_count instead. public ?int $totalUnreadCount = null, public ?array $totalUnreadCountByTeam = null, public ?int $unreadChannels = null, diff --git a/src/GeneratedModels/PollOptionResponseData.php b/src/GeneratedModels/PollOptionResponseData.php index 0b9f653..68a37b9 100644 --- a/src/GeneratedModels/PollOptionResponseData.php +++ b/src/GeneratedModels/PollOptionResponseData.php @@ -8,6 +8,7 @@ class PollOptionResponseData extends BaseModel public function __construct( public ?string $id = null, public ?string $text = null, + public ?array $textI18n = null, public ?object $custom = null, ) { } diff --git a/src/GeneratedModels/PollResponseData.php b/src/GeneratedModels/PollResponseData.php index 427b2f7..323d792 100644 --- a/src/GeneratedModels/PollResponseData.php +++ b/src/GeneratedModels/PollResponseData.php @@ -8,7 +8,9 @@ class PollResponseData extends BaseModel public function __construct( public ?string $id = null, public ?string $name = null, + public ?array $nameI18n = null, public ?string $description = null, + public ?array $descriptionI18n = null, public ?string $votingVisibility = null, // Voting visibility of the poll public ?bool $enforceUniqueVote = null, public ?int $maxVotesAllowed = null, diff --git a/src/GeneratedModels/PollVoteResponseData.php b/src/GeneratedModels/PollVoteResponseData.php index 63ea12e..726044f 100644 --- a/src/GeneratedModels/PollVoteResponseData.php +++ b/src/GeneratedModels/PollVoteResponseData.php @@ -11,6 +11,7 @@ public function __construct( public ?string $optionID = null, public ?bool $isAnswer = null, public ?string $answerText = null, + public ?array $answerTextI18n = null, public ?string $userID = null, public ?UserResponse $user = null, // User response object public ?\DateTime $createdAt = null, diff --git a/src/GeneratedModels/PrivacySettingsResponse.php b/src/GeneratedModels/PrivacySettingsResponse.php index 4c6834c..a58a293 100644 --- a/src/GeneratedModels/PrivacySettingsResponse.php +++ b/src/GeneratedModels/PrivacySettingsResponse.php @@ -3,12 +3,15 @@ declare(strict_types=1); namespace GetStream\GeneratedModels; +/** + * The privacy settings of the user. + */ class PrivacySettingsResponse extends BaseModel { public function __construct( - public ?TypingIndicatorsResponse $typingIndicators = null, - public ?ReadReceiptsResponse $readReceipts = null, - public ?DeliveryReceiptsResponse $deliveryReceipts = null, + public ?TypingIndicatorsResponse $typingIndicators = null, // The settings for typing indicator events. + public ?ReadReceiptsResponse $readReceipts = null, // The settings for the read receipt events. + public ?DeliveryReceiptsResponse $deliveryReceipts = null, // The settings for the delivery receipt events. ) { } diff --git a/src/GeneratedModels/PushPreferencesResponse.php b/src/GeneratedModels/PushPreferencesResponse.php index dacb4f8..8c6c54f 100644 --- a/src/GeneratedModels/PushPreferencesResponse.php +++ b/src/GeneratedModels/PushPreferencesResponse.php @@ -3,15 +3,18 @@ declare(strict_types=1); namespace GetStream\GeneratedModels; +/** + * The push preference details. + */ class PushPreferencesResponse extends BaseModel { public function __construct( - public ?string $chatLevel = null, + public ?string $chatLevel = null, // The scope level of the push notifications. public ?ChatPreferencesResponse $chatPreferences = null, public ?string $callLevel = null, public ?string $feedsLevel = null, public ?FeedsPreferencesResponse $feedsPreferences = null, - public ?\DateTime $disabledUntil = null, + public ?\DateTime $disabledUntil = null, // If provided the notifications will be disabled until the set date. ) { } diff --git a/src/GeneratedModels/QueryActivitiesRequest.php b/src/GeneratedModels/QueryActivitiesRequest.php index ffa6f11..ac33804 100644 --- a/src/GeneratedModels/QueryActivitiesRequest.php +++ b/src/GeneratedModels/QueryActivitiesRequest.php @@ -12,7 +12,8 @@ public function __construct( public ?array $sort = null, // Sorting parameters for the query public ?bool $includePrivateActivities = null, public ?bool $includeExpiredActivities = null, // When true, include both expired and non-expired activities in the result. - public ?bool $includeSoftDeletedActivities = null, // When true, include soft-deleted activities in the result. + public ?bool $includeSoftDeletedActivities = null, // When true, include soft-deleted activities in the result. Server-side only; not allowed when a user is set. + public ?bool $includeModeratedActivities = null, // When true, include activities hidden by moderation (shadowed or removed). Server-side only; not allowed when a user is set. public ?bool $enrichOwnFields = null, public ?int $limit = null, public ?string $next = null, diff --git a/src/GeneratedModels/QueryCallRingAttemptsRequest.php b/src/GeneratedModels/QueryCallRingAttemptsRequest.php new file mode 100644 index 0000000..bdad131 --- /dev/null +++ b/src/GeneratedModels/QueryCallRingAttemptsRequest.php @@ -0,0 +1,17 @@ +|null */ + #[ArrayOf(RingAttemptResponse::class)] + public ?array $ringAttempts = null, // The attempts, newest first + ) { + } + + // 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/QueryCommentsRequest.php b/src/GeneratedModels/QueryCommentsRequest.php index e01679a..ecfe81c 100644 --- a/src/GeneratedModels/QueryCommentsRequest.php +++ b/src/GeneratedModels/QueryCommentsRequest.php @@ -9,6 +9,7 @@ public function __construct( public ?object $filter = null, // Filter to apply to the query public ?string $sort = null, // Array of sort parameters public ?string $idAround = null, // Returns the comment with the specified ID along with surrounding comments for context + public ?bool $includeSoftDeletedComments = null, // When true, include soft-deleted comments in the result. Server-side only, and requires an object_id filter. Covers comments removed via deleteComment and via soft user-data deletion. Moderation-actioned comments (removed, hidden, shadow_blocked) remain excluded, as are comments whose parent activity is itself deleted. public ?int $limit = null, // Maximum number of comments to return public ?string $next = null, public ?string $prev = null, diff --git a/src/GeneratedModels/QueryPinnedActivitiesRequest.php b/src/GeneratedModels/QueryPinnedActivitiesRequest.php index 09cc26e..bd7d9d9 100644 --- a/src/GeneratedModels/QueryPinnedActivitiesRequest.php +++ b/src/GeneratedModels/QueryPinnedActivitiesRequest.php @@ -11,9 +11,14 @@ public function __construct( #[ArrayOf(SortParamRequest::class)] public ?array $sort = null, // Sorting parameters for the query public ?bool $enrichOwnFields = null, + public ?bool $includeSoftDeletedActivities = null, // When true, return pinned activities even if they are soft-deleted. Server-side only; not allowed when a user is set. + public ?bool $includeModeratedActivities = null, // When true, return pinned activities even if moderation hides them (shadowed or removed). Server-side only; not allowed when a user is set. + public ?bool $includeExpiredActivities = null, // When true, return pinned activities even if they have expired. Server-side only; not allowed when a user is set. public ?int $limit = null, public ?string $next = null, public ?string $prev = null, + public ?string $userID = null, + public ?UserRequest $user = null, // User request object ) { } diff --git a/src/GeneratedModels/QueryReviewQueueRequest.php b/src/GeneratedModels/QueryReviewQueueRequest.php index 323ff8d..d92e55b 100644 --- a/src/GeneratedModels/QueryReviewQueueRequest.php +++ b/src/GeneratedModels/QueryReviewQueueRequest.php @@ -6,7 +6,7 @@ class QueryReviewQueueRequest extends BaseModel { public function __construct( - public ?object $filter = null, // Filter conditions for review queue items. Accepts built-in fields (e.g. status, channel_cid, severity, recommended_action) and customer-supplied moderation_payload.custom keys: any key that is not a built-in field is matched against the item's custom moderation data (e.g. {"location_id": "loc-42"}). Use filter_config.filterable_custom_keys to discover which custom keys the app exposes as chips. + public ?object $filter = null, // Filter conditions for review queue items. Accepts built-in fields (e.g. status, channel_cid, severity, recommended_action) and customer-supplied moderation_payload.custom keys: any key that is not a built-in field is matched against the item's custom moderation data (e.g. {"location_id": "loc-42"}). Use filter_config.filterable_custom_keys to discover which custom keys the app exposes as chips. content_text searches the moderated text: "$q" is a keyword search (terms ANDed, no adjacency) over the indexed tsvector, while "$eq" (or "$in" for several wordings) matches the text exactly. The exact form is unindexed, so scope it with date_range rather than running it across the whole queue. /** @var array|null */ #[ArrayOf(SortParamRequest::class)] public ?array $sort = null, // Sorting parameters for the results diff --git a/src/GeneratedModels/RankingConfig.php b/src/GeneratedModels/RankingConfig.php index 5ab8a6f..7998388 100644 --- a/src/GeneratedModels/RankingConfig.php +++ b/src/GeneratedModels/RankingConfig.php @@ -12,6 +12,7 @@ public function __construct( /** @var array|null */ #[MapOf(DecayFunctionConfig::class)] public ?array $functions = null, // Decay functions configuration + public ?float $excludeBelow = null, // Activities scoring strictly below this value are dropped from the ranked feed. Not supported on aggregated feeds ) { } diff --git a/src/GeneratedModels/ReadReceiptsResponse.php b/src/GeneratedModels/ReadReceiptsResponse.php index 29eb5c2..902a9ba 100644 --- a/src/GeneratedModels/ReadReceiptsResponse.php +++ b/src/GeneratedModels/ReadReceiptsResponse.php @@ -3,6 +3,9 @@ declare(strict_types=1); namespace GetStream\GeneratedModels; +/** + * The settings for the read receipt events. + */ class ReadReceiptsResponse extends BaseModel { public function __construct( diff --git a/src/GeneratedModels/ReminderResponseData.php b/src/GeneratedModels/ReminderResponseData.php index f3a7f38..15e8cfe 100644 --- a/src/GeneratedModels/ReminderResponseData.php +++ b/src/GeneratedModels/ReminderResponseData.php @@ -7,6 +7,7 @@ class ReminderResponseData extends BaseModel { public function __construct( public ?\DateTime $remindAt = null, + public ?\DateTime $expiresAt = null, public ?string $channelCid = null, public ?ChannelResponse $channel = null, // Represents channel in chat public ?string $messageID = null, diff --git a/src/GeneratedModels/ReviewQueueItemResponse.php b/src/GeneratedModels/ReviewQueueItemResponse.php index 4944c3c..15fbc89 100644 --- a/src/GeneratedModels/ReviewQueueItemResponse.php +++ b/src/GeneratedModels/ReviewQueueItemResponse.php @@ -18,6 +18,7 @@ public function __construct( public ?\DateTime $reviewedAt = null, // When the item was reviewed public ?string $reviewedBy = null, // ID of the moderator who reviewed the item public ?array $languages = null, // Detected languages in the content + public ?string $countryCode = null, public ?int $severity = null, // Severity level of the content public ?string $aiTextSeverity = null, // AI-determined text severity public ?string $latestModeratorAction = null, @@ -43,6 +44,7 @@ public function __construct( public ?Reaction $feedsV2Reaction = null, public ?FeedsV3ActivityResponse $feedsV3Activity = null, public ?FeedsV3CommentResponse $feedsV3Comment = null, + public ?PollResponseData $poll = null, public ?array $teams = null, // Teams associated with this item public ?string $configKey = null, public ?int $flagsCount = null, diff --git a/src/GeneratedModels/RingAttemptResponse.php b/src/GeneratedModels/RingAttemptResponse.php new file mode 100644 index 0000000..fb97459 --- /dev/null +++ b/src/GeneratedModels/RingAttemptResponse.php @@ -0,0 +1,34 @@ +|null */ + #[MapOf(RingTargetResponse::class)] + public ?array $targets = null, // The rung users, keyed by user ID + ) { + } + + // 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/RingCallRequest.php b/src/GeneratedModels/RingCallRequest.php index e1ce3e5..1c2d471 100644 --- a/src/GeneratedModels/RingCallRequest.php +++ b/src/GeneratedModels/RingCallRequest.php @@ -8,6 +8,7 @@ class RingCallRequest extends BaseModel public function __construct( public ?array $membersIds = null, // Members that should receive the ring. If no ids are provided, all call members who are not already in the call will receive ring notifications. public ?bool $video = null, // Indicate if call should be video + public ?object $custom = null, // Opaque context stored on the ring attempt; refs and IDs only ) { } diff --git a/src/GeneratedModels/RingCallResponse.php b/src/GeneratedModels/RingCallResponse.php index 746f06d..55dd03a 100644 --- a/src/GeneratedModels/RingCallResponse.php +++ b/src/GeneratedModels/RingCallResponse.php @@ -8,6 +8,7 @@ class RingCallResponse extends BaseModel public function __construct( public ?string $duration = null, public ?array $membersIds = null, // List of members ringing notification was sent to + public ?string $ringID = null, // The ring this call created, for correlating the accept, reject and missed outcomes that follow ) { } diff --git a/src/GeneratedModels/RingDeliveryResponse.php b/src/GeneratedModels/RingDeliveryResponse.php new file mode 100644 index 0000000..9872f0d --- /dev/null +++ b/src/GeneratedModels/RingDeliveryResponse.php @@ -0,0 +1,24 @@ +|null */ + #[ArrayOf(RingDeliveryResponse::class)] + public ?array $deliveries = null, // The dispatches of this ring to the target's devices + ) { + } + + // 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/RuleBuilderCondition.php b/src/GeneratedModels/RuleBuilderCondition.php index c493f35..7471ac9 100644 --- a/src/GeneratedModels/RuleBuilderCondition.php +++ b/src/GeneratedModels/RuleBuilderCondition.php @@ -21,6 +21,7 @@ public function __construct( public ?FloodSimilarRuleParameters $floodSimilarParams = null, public ?ContentCustomPropertyCountParameters $contentCustomPropertyCountParams = null, public ?ContentCustomPropertyParameters $contentCustomPropertyParams = null, + public ?ContentCountryCodeParameters $contentCountryCodeParams = null, public ?IPContentCountRuleParameters $ipContentCountRuleParams = null, public ?IPFlagCountRuleParameters $ipFlagCountRuleParams = null, public ?TextContentParameters $textContentParams = null, @@ -37,6 +38,10 @@ public function __construct( public ?CallCustomPropertyParameters $callCustomPropertyParams = null, public ?CallViolationCountParameters $callViolationCountParams = null, public ?UserReactionCountRuleParameters $userReactionCountParams = null, + public ?UserIdenticalImageCountParameters $userIdenticalImageCountParams = null, + public ?UserChannelCountRuleParameters $userChannelCountParams = null, + public ?UserChannelBanCountRuleParameters $userChannelBanCountParams = null, + public ?IntentRuleParameters $intentRuleParams = null, // intent_rule params: policy intent topic label and the minimum final score (1-100) that fires the condition ) { } diff --git a/src/GeneratedModels/SetFeedsRetentionPolicyRequest.php b/src/GeneratedModels/SetFeedsRetentionPolicyRequest.php new file mode 100644 index 0000000..9a481de --- /dev/null +++ b/src/GeneratedModels/SetFeedsRetentionPolicyRequest.php @@ -0,0 +1,18 @@ +|null */ #[ArrayOf(UserResponse::class)] public ?array $mentionedUsers = null, + public ?bool $hidden = null, public ?string $status = null, // Status of the comment. One of: active, deleted, removed, hidden public ?\DateTime $createdAt = null, public ?\DateTime $updatedAt = null, diff --git a/src/GeneratedModels/TypingIndicatorsResponse.php b/src/GeneratedModels/TypingIndicatorsResponse.php index 8af2c2b..1dd99f0 100644 --- a/src/GeneratedModels/TypingIndicatorsResponse.php +++ b/src/GeneratedModels/TypingIndicatorsResponse.php @@ -3,6 +3,9 @@ declare(strict_types=1); namespace GetStream\GeneratedModels; +/** + * The settings for typing indicator events. + */ class TypingIndicatorsResponse extends BaseModel { public function __construct( diff --git a/src/GeneratedModels/UnbanRequest.php b/src/GeneratedModels/UnbanRequest.php index 4d0e855..1b315d7 100644 --- a/src/GeneratedModels/UnbanRequest.php +++ b/src/GeneratedModels/UnbanRequest.php @@ -8,6 +8,7 @@ class UnbanRequest extends BaseModel public function __construct( /** @deprecated */ public ?string $unbannedByID = null, // ID of the user performing the unban Deprecated: not used by the unban flow + /** @deprecated */ public ?UserRequest $unbannedBy = null, // User request object ) { } diff --git a/src/GeneratedModels/UnblockActionRequestPayload.php b/src/GeneratedModels/UnblockActionRequestPayload.php index d5ec0df..0642b84 100644 --- a/src/GeneratedModels/UnblockActionRequestPayload.php +++ b/src/GeneratedModels/UnblockActionRequestPayload.php @@ -4,7 +4,7 @@ namespace GetStream\GeneratedModels; /** - * Deprecated: use restore instead — it now also reverses a block or shadow block. Configuration for unblock action. + * Deprecated: Use restore instead, which now also reverses a block or shadow block. Configuration for unblock action. */ class UnblockActionRequestPayload extends BaseModel { diff --git a/src/GeneratedModels/UnfollowBatchRequest.php b/src/GeneratedModels/UnfollowBatchRequest.php index c5c6615..f99fd9e 100644 --- a/src/GeneratedModels/UnfollowBatchRequest.php +++ b/src/GeneratedModels/UnfollowBatchRequest.php @@ -11,6 +11,7 @@ public function __construct( public ?array $follows = null, // List of follow relationships to remove, each with optional keep_history public ?bool $deleteNotificationActivity = null, // Whether to delete the corresponding notification activity (default: false) public ?bool $enrichOwnFields = null, // If true, enriches the follow's source_feed and target_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. + public ?bool $async = null, // If true, the batch is queued as a background task, paced per app, and the response has empty follows and a task_id. Server-side only. Supported by the get-or-create endpoint (GetOrCreateUnfollows); UnfollowBatch rejects it. Async batches can apply out of order with other follow writes. Defaults to false. ) { } diff --git a/src/GeneratedModels/UnfollowBatchResponse.php b/src/GeneratedModels/UnfollowBatchResponse.php index f34adb9..d952dcf 100644 --- a/src/GeneratedModels/UnfollowBatchResponse.php +++ b/src/GeneratedModels/UnfollowBatchResponse.php @@ -9,6 +9,7 @@ public function __construct( /** @var array|null */ #[ArrayOf(FollowResponse::class)] public ?array $follows = null, // List of follow relationships that were removed + public ?string $taskID = null, // ID of the background task when the request was sent with async: true public ?string $duration = null, ) { } diff --git a/src/GeneratedModels/UnreadCountsChannel.php b/src/GeneratedModels/UnreadCountsChannel.php index 8861254..30f551f 100644 --- a/src/GeneratedModels/UnreadCountsChannel.php +++ b/src/GeneratedModels/UnreadCountsChannel.php @@ -3,12 +3,15 @@ declare(strict_types=1); namespace GetStream\GeneratedModels; +/** + * The unread information of a channel. + */ class UnreadCountsChannel extends BaseModel { public function __construct( - public ?string $channelID = null, - public ?int $unreadCount = null, - public ?\DateTime $lastRead = null, + public ?string $channelID = null, // The channel CID (type:id). + public ?int $unreadCount = null, // The number of unread messages inside the channel. + public ?\DateTime $lastRead = null, // The date which the current user last read the channel. ) { } diff --git a/src/GeneratedModels/UnreadCountsChannelType.php b/src/GeneratedModels/UnreadCountsChannelType.php index 0effc74..05b81e6 100644 --- a/src/GeneratedModels/UnreadCountsChannelType.php +++ b/src/GeneratedModels/UnreadCountsChannelType.php @@ -3,12 +3,15 @@ declare(strict_types=1); namespace GetStream\GeneratedModels; +/** + * The unread information from channels with a specific type. + */ class UnreadCountsChannelType extends BaseModel { public function __construct( - public ?string $channelType = null, - public ?int $channelCount = null, - public ?int $unreadCount = null, + public ?string $channelType = null, // The channel type. + public ?int $channelCount = null, // The number of unread channels of this channel type. + public ?int $unreadCount = null, // The number of unread messages of all the channels with this type. ) { } diff --git a/src/GeneratedModels/UnreadCountsThread.php b/src/GeneratedModels/UnreadCountsThread.php index 628e290..370950b 100644 --- a/src/GeneratedModels/UnreadCountsThread.php +++ b/src/GeneratedModels/UnreadCountsThread.php @@ -3,13 +3,16 @@ declare(strict_types=1); namespace GetStream\GeneratedModels; +/** + * The unread information of a thread. + */ class UnreadCountsThread extends BaseModel { public function __construct( - public ?int $unreadCount = null, - public ?\DateTime $lastRead = null, - public ?string $lastReadMessageID = null, - public ?string $parentMessageID = null, + public ?int $unreadCount = null, // The number of unread replies inside the thread. + public ?\DateTime $lastRead = null, // The date which the current user last read the thread. + public ?string $lastReadMessageID = null, // The id of the last reply which the current user read in the thread. + public ?string $parentMessageID = null, // The message id of the root of the thread. ) { } diff --git a/src/GeneratedModels/UpdateChannelTypeRequest.php b/src/GeneratedModels/UpdateChannelTypeRequest.php index c19ad14..923e4e0 100644 --- a/src/GeneratedModels/UpdateChannelTypeRequest.php +++ b/src/GeneratedModels/UpdateChannelTypeRequest.php @@ -43,7 +43,7 @@ public function __construct( public ?array $allowedFlagReasons = null, public ?Thresholds $automodThresholds = null, // Sets thresholds for AI moderation public ?bool $skipLastMsgUpdateForSystemMsgs = null, - public ?string $pushLevel = null, + public ?string $pushLevel = null, // Sets the push notification level for a channel type public ?ChatPreferences $chatPreferences = null, public ?array $commands = null, // List of commands that channel supports ) { diff --git a/src/GeneratedModels/UpdateChannelTypeResponse.php b/src/GeneratedModels/UpdateChannelTypeResponse.php index e38b457..dcccaa9 100644 --- a/src/GeneratedModels/UpdateChannelTypeResponse.php +++ b/src/GeneratedModels/UpdateChannelTypeResponse.php @@ -3,6 +3,9 @@ declare(strict_types=1); namespace GetStream\GeneratedModels; +/** + * Basic response information + */ class UpdateChannelTypeResponse extends BaseModel { public function __construct( @@ -44,12 +47,12 @@ public function __construct( public ?int $partitionSize = null, public ?string $partitionTtl = null, public ?bool $skipLastMsgUpdateForSystemMsgs = null, - public ?string $pushLevel = null, + public ?string $pushLevel = null, // Sets the push notification level for a channel type public ?ChatPreferences $chatPreferences = null, public ?\DateTime $createdAt = null, public ?\DateTime $updatedAt = null, public ?array $commands = null, - public ?string $duration = null, + public ?string $duration = null, // Duration of the request in milliseconds ) { } diff --git a/src/GeneratedModels/UpdatePollOptionRequest.php b/src/GeneratedModels/UpdatePollOptionRequest.php index 2840163..e604f09 100644 --- a/src/GeneratedModels/UpdatePollOptionRequest.php +++ b/src/GeneratedModels/UpdatePollOptionRequest.php @@ -9,6 +9,8 @@ public function __construct( public ?string $id = null, // Option ID public ?string $text = null, // Option text public ?object $custom = null, // Custom data for this object + public ?string $configKey = null, // Key of the moderation configuration to use. Server-side only. + public ?string $configTeam = null, // Team associated with the configuration. Server-side only. public ?string $userID = null, public ?UserRequest $user = null, // User request object ) { diff --git a/src/GeneratedModels/UpdatePollPartialRequest.php b/src/GeneratedModels/UpdatePollPartialRequest.php index c5b890f..f186d60 100644 --- a/src/GeneratedModels/UpdatePollPartialRequest.php +++ b/src/GeneratedModels/UpdatePollPartialRequest.php @@ -6,6 +6,8 @@ class UpdatePollPartialRequest extends BaseModel { public function __construct( + public ?string $configKey = null, // Key of the moderation configuration to use. Server-side only. + public ?string $configTeam = null, // Team associated with the configuration. Server-side only. public ?object $set = null, // Sets new field values public ?array $unset = null, // Array of field names to unset public ?string $userID = null, diff --git a/src/GeneratedModels/UpdatePollRequest.php b/src/GeneratedModels/UpdatePollRequest.php index 4ba62cd..594cb33 100644 --- a/src/GeneratedModels/UpdatePollRequest.php +++ b/src/GeneratedModels/UpdatePollRequest.php @@ -19,6 +19,8 @@ public function __construct( public ?bool $allowAnswers = null, // Allow answers public ?bool $isClosed = null, // Is closed public ?object $custom = null, // Custom data for this object + public ?string $configKey = null, // Key of the moderation configuration to use. Server-side only. + public ?string $configTeam = null, // Team associated with the configuration. Server-side only. public ?string $userID = null, public ?UserRequest $user = null, // User request object ) { diff --git a/src/GeneratedModels/UpdateReminderRequest.php b/src/GeneratedModels/UpdateReminderRequest.php index 36ea28f..f05f2ce 100644 --- a/src/GeneratedModels/UpdateReminderRequest.php +++ b/src/GeneratedModels/UpdateReminderRequest.php @@ -7,6 +7,7 @@ class UpdateReminderRequest extends BaseModel { public function __construct( public ?\DateTime $remindAt = null, + public ?\DateTime $expiresAt = null, public ?string $userID = null, public ?UserRequest $user = null, // User request object ) { diff --git a/src/GeneratedModels/UpdateUsersResponse.php b/src/GeneratedModels/UpdateUsersResponse.php index b236a84..92aedd6 100644 --- a/src/GeneratedModels/UpdateUsersResponse.php +++ b/src/GeneratedModels/UpdateUsersResponse.php @@ -10,7 +10,7 @@ public function __construct( #[MapOf(FullUserResponse::class)] public ?array $users = null, // Object containing users /** @deprecated */ - public ?string $membershipDeletionTaskID = null, // Deprecated: always empty. Removing a user from a team no longer deletes their memberships in that team's channels, so there is no task to poll + public ?string $membershipDeletionTaskID = null, // Deprecated: Always empty. Removing a user from a team no longer deletes their memberships in that team's channels, so there is no task to poll. public ?string $duration = null, // Duration of the request in milliseconds ) { } diff --git a/src/GeneratedModels/UpsertActivitiesRequest.php b/src/GeneratedModels/UpsertActivitiesRequest.php index 2f2fa79..3fac9c2 100644 --- a/src/GeneratedModels/UpsertActivitiesRequest.php +++ b/src/GeneratedModels/UpsertActivitiesRequest.php @@ -12,6 +12,7 @@ public function __construct( public ?bool $enrichOwnFields = null, // If true, enriches the activities' current_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. public ?bool $forceModeration = null, // If true, forces moderation to run for server-side requests. By default, server-side requests skip moderation. Client-side requests always run moderation regardless of this field. public ?bool $createUsers = null, // Server-side only. If true, auto-creates users referenced by activity user_id values that don't already exist. Default: false. + public ?bool $skipExisting = null, // Server-side only. If true, activities whose id already exists are left unchanged instead of updated: no write, events or notifications. They are listed in skipped_existing and returned as stored. Soft-deleted activities count as existing and are returned with deleted_at set. Default: false. ) { } diff --git a/src/GeneratedModels/UpsertActivitiesResponse.php b/src/GeneratedModels/UpsertActivitiesResponse.php index 62c77ab..31307c7 100644 --- a/src/GeneratedModels/UpsertActivitiesResponse.php +++ b/src/GeneratedModels/UpsertActivitiesResponse.php @@ -10,6 +10,7 @@ public function __construct( #[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 + public ?array $skippedExisting = null, // IDs of activities left unchanged because they already existed. Only set when skip_existing is true. public ?string $duration = null, ) { } diff --git a/src/GeneratedModels/UpsertConfigRequest.php b/src/GeneratedModels/UpsertConfigRequest.php index ea3a9a5..a3b7340 100644 --- a/src/GeneratedModels/UpsertConfigRequest.php +++ b/src/GeneratedModels/UpsertConfigRequest.php @@ -22,6 +22,7 @@ public function __construct( public ?VelocityFilterConfig $velocityFilterConfig = null, public ?FloodConfig $floodConfig = null, public ?RuleBuilderConfig $ruleBuilderConfig = null, + public ?IntentConfigRequest $intentConfig = null, public ?AITextConfig $bodyguardConfig = null, public ?AIImageConfig $awsRekognitionConfig = null, public ?VideoCallRuleConfig $videoCallRuleConfig = null, diff --git a/src/GeneratedModels/UpsertUserInterestsRequest.php b/src/GeneratedModels/UpsertUserInterestsRequest.php new file mode 100644 index 0000000..002074d --- /dev/null +++ b/src/GeneratedModels/UpsertUserInterestsRequest.php @@ -0,0 +1,20 @@ +|null */ + #[ArrayOf(UserInterestRequest::class)] + public ?array $interests = null, // Interest tags to add or update (1-50) + ) { + } + + // 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/UpsertUserInterestsResponse.php b/src/GeneratedModels/UpsertUserInterestsResponse.php new file mode 100644 index 0000000..b2085fc --- /dev/null +++ b/src/GeneratedModels/UpsertUserInterestsResponse.php @@ -0,0 +1,21 @@ +|null */ + #[ArrayOf(InterestTagResponse::class)] + public ?array $interests = null, // All interest tags of the user after the write + public ?string $duration = 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/UserChannelBanCountRuleParameters.php b/src/GeneratedModels/UserChannelBanCountRuleParameters.php new file mode 100644 index 0000000..97d5b72 --- /dev/null +++ b/src/GeneratedModels/UserChannelBanCountRuleParameters.php @@ -0,0 +1,17 @@ +|null */ #[ArrayOf(DeviceResponse::class)] public ?array $devices = null, // List of devices user is using diff --git a/src/GeneratedModels/UserResponsePrivacyFields.php b/src/GeneratedModels/UserResponsePrivacyFields.php index 72fbc41..d6bbe25 100644 --- a/src/GeneratedModels/UserResponsePrivacyFields.php +++ b/src/GeneratedModels/UserResponsePrivacyFields.php @@ -24,7 +24,7 @@ public function __construct( public ?\DateTime $deactivatedAt = null, public ?array $blockedUserIds = null, public ?int $avgResponseTime = null, - public ?PrivacySettingsResponse $privacySettings = null, + public ?PrivacySettingsResponse $privacySettings = null, // The privacy settings of the user. public ?bool $invisible = null, ) { } diff --git a/src/GeneratedModels/WSEvent.php b/src/GeneratedModels/WSEvent.php index f25640a..0c9855d 100644 --- a/src/GeneratedModels/WSEvent.php +++ b/src/GeneratedModels/WSEvent.php @@ -31,7 +31,7 @@ public function __construct( public ?string $reason = null, public ?UserResponse $createdBy = null, // User response object public ?bool $automoderation = null, - public ?ModerationResponse $automoderationScores = null, + public ?ModerationResponse $automoderationScores = null, // Response from AI moderation public ?string $parentID = null, public ?string $team = null, public ?object $custom = null, diff --git a/src/GeneratedModels/WrappedUnreadCountsResponse.php b/src/GeneratedModels/WrappedUnreadCountsResponse.php index 5538d03..61aa86a 100644 --- a/src/GeneratedModels/WrappedUnreadCountsResponse.php +++ b/src/GeneratedModels/WrappedUnreadCountsResponse.php @@ -4,23 +4,23 @@ namespace GetStream\GeneratedModels; /** - * Basic response information + * The total unread information from the current user. */ class WrappedUnreadCountsResponse extends BaseModel { public function __construct( - public ?int $totalUnreadCount = null, - public ?int $totalUnreadThreadsCount = null, - public ?array $totalUnreadCountByTeam = null, + public ?int $totalUnreadCount = null, // The total number of unread messages. + public ?int $totalUnreadThreadsCount = null, // The total number of unread threads. + public ?array $totalUnreadCountByTeam = null, // The total number of unread messages grouped by team. /** @var array|null */ #[ArrayOf(UnreadCountsChannel::class)] - public ?array $channels = null, + public ?array $channels = null, // The unread information per channel. /** @var array|null */ #[ArrayOf(UnreadCountsChannelType::class)] - public ?array $channelType = null, + public ?array $channelType = null, // The unread information per channel type. /** @var array|null */ #[ArrayOf(UnreadCountsThread::class)] - public ?array $threads = null, + public ?array $threads = null, // The unread information per thread. public ?string $duration = null, // Duration of the request in milliseconds ) { } diff --git a/tests/WebhookTest.php b/tests/WebhookTest.php index 3d0ff02..9d396c2 100644 --- a/tests/WebhookTest.php +++ b/tests/WebhookTest.php @@ -125,6 +125,7 @@ public static function webhookEventProvider(): array 'call.recording_stopped' => ['call.recording_stopped', 'CallRecordingStoppedEvent'], 'call.rejected' => ['call.rejected', 'CallRejectedEvent'], 'call.ring' => ['call.ring', 'CallRingEvent'], + 'call.ring_settled' => ['call.ring_settled', 'CallRingSettledEvent'], 'call.rtmp_broadcast_failed' => ['call.rtmp_broadcast_failed', 'CallRtmpBroadcastFailedEvent'], 'call.rtmp_broadcast_started' => ['call.rtmp_broadcast_started', 'CallRtmpBroadcastStartedEvent'], 'call.rtmp_broadcast_stopped' => ['call.rtmp_broadcast_stopped', 'CallRtmpBroadcastStoppedEvent'], @@ -162,6 +163,8 @@ public static function webhookEventProvider(): array 'export.bulk_image_moderation.success' => ['export.bulk_image_moderation.success', 'AsyncBulkImageModerationEvent'], 'export.channels.error' => ['export.channels.error', 'AsyncExportErrorEvent'], 'export.channels.success' => ['export.channels.success', 'AsyncExportChannelsEvent'], + 'export.label_results.error' => ['export.label_results.error', 'AsyncExportErrorEvent'], + 'export.label_results.success' => ['export.label_results.success', 'AsyncExportLabelResultsEvent'], 'export.moderation_logs.error' => ['export.moderation_logs.error', 'AsyncExportErrorEvent'], 'export.moderation_logs.success' => ['export.moderation_logs.success', 'AsyncExportModerationLogsEvent'], 'export.review_queue.error' => ['export.review_queue.error', 'AsyncExportErrorEvent'], @@ -187,6 +190,7 @@ public static function webhookEventProvider(): array 'feeds.bookmark_folder.updated' => ['feeds.bookmark_folder.updated', 'BookmarkFolderUpdatedEvent'], 'feeds.comment.added' => ['feeds.comment.added', 'CommentAddedEvent'], 'feeds.comment.deleted' => ['feeds.comment.deleted', 'CommentDeletedEvent'], + 'feeds.comment.feedback' => ['feeds.comment.feedback', 'CommentFeedbackEvent'], 'feeds.comment.reaction.added' => ['feeds.comment.reaction.added', 'CommentReactionAddedEvent'], 'feeds.comment.reaction.deleted' => ['feeds.comment.reaction.deleted', 'CommentReactionDeletedEvent'], 'feeds.comment.reaction.updated' => ['feeds.comment.reaction.updated', 'CommentReactionUpdatedEvent'], @@ -207,6 +211,8 @@ public static function webhookEventProvider(): array 'feeds.notification_feed.updated' => ['feeds.notification_feed.updated', 'NotificationFeedUpdatedEvent'], 'feeds.stories_feed.updated' => ['feeds.stories_feed.updated', 'StoriesFeedUpdatedEvent'], 'flag.updated' => ['flag.updated', 'FlagUpdatedEvent'], + 'import.error' => ['import.error', 'AsyncImportErrorEvent'], + 'import.success' => ['import.success', 'AsyncImportSuccessEvent'], 'ingress.error' => ['ingress.error', 'IngressErrorEvent'], 'ingress.started' => ['ingress.started', 'IngressStartedEvent'], 'ingress.stopped' => ['ingress.stopped', 'IngressStoppedEvent'],