Skip to content

Update open api models for Video#1630

Open
rahul-lohra wants to merge 17 commits intodevelop-v2from
chore/rahullohra/update-openapi-models
Open

Update open api models for Video#1630
rahul-lohra wants to merge 17 commits intodevelop-v2from
chore/rahullohra/update-openapi-models

Conversation

@rahul-lohra
Copy link
Contributor

@rahul-lohra rahul-lohra commented Mar 12, 2026

Goal

Update open api models for Video

Implementation

Update open api models for Video

🎨 UI Changes

none

Testing

None

Summary by CodeRabbit

  • Refactor
    • Improved internal naming conventions for video reaction models to enhance code clarity and maintainability.
    • Reorganized data structure references across the SDK to better align with domain-specific terminology.
    • Updated type mappings and model conversions to reflect refined architectural organization.

aleksandar-apostolov and others added 14 commits February 21, 2026 15:46
When the system launches CallService (e.g. from a push notification
or process restart), AndroidThreeTen may not be initialized since
StreamVideoBuilder.build() hasn't run yet. This causes a
ZoneRulesException crash on OffsetDateTime.now() in onCreate.

Since the only purpose is measuring elapsed service uptime for the
stop debouncer, replace OffsetDateTime with SystemClock.elapsedRealtime()
which is monotonic, requires no initialization, and is unaffected by
wall clock changes.
* fix: Reject current active call when telecom puts it to inactive or hold

* chore: improve code semantic
* feat: Add observable call thumbnail

* chore: remove usage of `asStateFlow()`
…active call (#1614)

* feature: reject call when busy

* feature: write test cases for CallStateRingEvent and CallBusyHandler

* fix: simplify logic

* fix: simplify logic

* fix: simplify logic and write unit tests

* fix: set rejectCallWhenBusy to false in demo-app

* fix: update kdoc

* chore: update kdoc

* chore: revert function visibility

* chore: revert unnecessary changes

* chore: refactor

* chore: refactor

* chore: Remove dependency of StreamVideoClient from CallBusyHandler

* chore: update test cases

* chore: use @InternalStreamVideoApi to hide rejectCallWhenBusy from public api

* chore: refactor

* chore: refactor

---------

Co-authored-by: Aleksandar Apostolov <apostolov.alexandar@gmail.com>
* fix: Update ringing state on call-ended event

* fix: Update ringing state on call-ended event

* chore: refactor
…ng flow (#1617)

* fix: Correctly update from RingingState.Outgoing is to RingingState.Active when we perform joinAndRing and WS is not connected

To set WS connection to null set the return of waitForConnectionId to null

* chore: refactor

* chore: atomically update ringingStateUpdatesStopped

* chore: refactor ringingLogger

* chore: improve `joinAndRing` state management and ringing logic

- Renamed `ringingStateUpdatesStopped` to `isJoinAndRingInProgress` in `CallState` for better clarity.
- Updated `updateRingingState` to properly handle `RingingState.Active` transitions during normal joins vs. `joinAndRing` flows.
- Modified `updateFromJoinResponse` to ensure `acceptedBy` list correctly merges server-side data with local state.
- Refined `ClientState` transition logic to prevent premature call acceptance states when a `joinAndRing` operation is in progress.
- Renamed `toggleRingingStateUpdates` to `toggleJoinAndRingProgress`.

---------

Co-authored-by: Aleksandar Apostolov <apostolov.alexandar@gmail.com>
* fix: Re-apply mic-state on `TrackPublishedEvent`

* fix: refactor

* fix: correct the logic
@rahul-lohra rahul-lohra self-assigned this Mar 12, 2026
@rahul-lohra rahul-lohra requested a review from a team as a code owner March 12, 2026 14:02
@rahul-lohra rahul-lohra added the pr:internal Internal or infra-only changes label Mar 12, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Mar 12, 2026

PR checklist ✅

All required conditions are satisfied:

  • Title length is OK (or ignored by label).
  • At least one pr: label exists.
  • Sections ### Goal, ### Implementation, and ### Testing are filled.

🎉 Great job! This PR is ready for review.

@coderabbitai
Copy link

coderabbitai bot commented Mar 12, 2026

Walkthrough

This pull request refactors model class names across the Stream Video Android SDK to improve clarity and domain specificity. Primary changes include renaming generic types like ReactionResponse to VideoReactionResponse, adding explicit Video prefixes to reaction-related request/response types, and updating corresponding imports and method signatures throughout the codebase without altering underlying logic.

Changes

Cohort / File(s) Summary
API Definitions
stream-video-android-core/api/stream-video-android-core.api
Extensive class renaming and restructuring, including ReactionResponseVideoReactionResponse, SendReactionRequestSendVideoReactionRequest, SendReactionResponseSendVideoReactionResponse, and updates to signaling event classes, call models, and metadata classes for improved clarity and explicit serialization support.
Call API
stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/Call.kt
Updated sendReaction() method return type from Result<SendReactionResponse> to Result<SendVideoReactionResponse> with corresponding import changes.
State Management
stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/CallState.kt
Changed reactions state flow type from List<ReactionResponse> to List<VideoReactionResponse> in both internal and public properties.
Internal API Layer
stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/StreamVideoClient.kt
Updated internal sendReaction request/response types from SendReactionRequest/SendReactionResponse to SendVideoReactionRequest/SendVideoReactionResponse.
Model Transformations
stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/model/Reaction.kt, stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/utils/DomainUtils.kt
Updated reaction property type and extension method receiver type from ReactionResponse to VideoReactionResponse.
Mapping Functions
stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/model/IceServer.kt
Changed toIceServer() extension receiver type from ICEServer to ICEServerResponse.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 Hop, hop, rejoice! The names now shine so clear,
Generic types transformed to show what's happening here,
VideoReactionResponse rings with purpose true,
Domain specifics bloom—the SDK's brand new! ✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description is largely incomplete, missing critical sections like Goal details, Implementation specifics, and proper Testing information required by the template. Expand the description to include: specific reasoning for the model changes, detailed implementation approach, and clarification on how these changes were tested or validated.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Update open api models for Video' accurately reflects the main change—renaming and restructuring OpenAPI-generated model classes throughout the codebase for improved clarity and domain specificity.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/rahullohra/update-openapi-models
📝 Coding Plan for PR comments
  • Generate coding plan

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/CallState.kt (1)

663-664: Consider keeping generated reaction models behind the SDK boundary.

This rename is correct locally, but it also means every OpenAPI model rename now becomes SDK API churn. Exposing a stable domain reaction type here would avoid pushing generator-owned names through CallState.reactions, Reaction.response, and Call.sendReaction() whenever the spec regenerates.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/CallState.kt`
around lines 663 - 664, CallState currently exposes generator-owned model
VideoReactionResponse via internal _reactions/val reactions which causes API
churn when OpenAPI regenerates; introduce a stable SDK domain type (e.g.,
VideoReaction or ReactionModel) and change CallState._reactions and reactions to
StateFlow<List<YourDomainReaction>>; map incoming VideoReactionResponse ->
YourDomainReaction at the boundary where responses are parsed/received and map
YourDomainReaction -> VideoReactionRequest (or the generator type) when calling
Call.sendReaction(); update usages referencing Reaction.response to use the new
domain type fields or provide conversion helpers so generator-owned names no
longer leak through CallState.reactions, Reaction.response, and
Call.sendReaction().
stream-video-android-core/api/stream-video-android-core.api (1)

65-65: Ensure breaking changes are documented in release notes.

This PR introduces several breaking API changes:

  • Method: sendReactionsendVideoReaction
  • Types: ReactionResponseVideoReactionResponse, SendReactionRequestSendVideoReactionRequest, SendReactionResponseSendVideoReactionResponse
  • User event constructors significantly restructured

Consider documenting migration steps for SDK consumers upgrading to this version.

Also applies to: 6321-6321, 6337-6337, 8391-8391

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@stream-video-android-core/api/stream-video-android-core.api` at line 65, This
PR introduces breaking API renames and constructor changes that must be
documented in the release notes: list the method rename sendReaction →
sendVideoReaction and the type renames ReactionResponse → VideoReactionResponse,
SendReactionRequest → SendVideoReactionRequest, SendReactionResponse →
SendVideoReactionResponse, and describe any changed user event constructors;
provide concrete migration steps showing the old symbol and the new symbol for
each renamed API (including example call patterns and any changed parameter
order/semantics), note the versions affected, and add a compatibility section
advising how consumers can update code (and any temporary shims/aliases if you
provide them) so clients can upgrade safely. Ensure the release notes reference
the exact symbols sendVideoReaction, sendReaction, VideoReactionResponse,
ReactionResponse, SendVideoReactionRequest, SendReactionRequest,
SendVideoReactionResponse, SendReactionResponse and clearly call out the user
event constructor restructuring.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@stream-video-android-core/api/stream-video-android-core.api`:
- Line 65: This PR introduces breaking API renames and constructor changes that
must be documented in the release notes: list the method rename sendReaction →
sendVideoReaction and the type renames ReactionResponse → VideoReactionResponse,
SendReactionRequest → SendVideoReactionRequest, SendReactionResponse →
SendVideoReactionResponse, and describe any changed user event constructors;
provide concrete migration steps showing the old symbol and the new symbol for
each renamed API (including example call patterns and any changed parameter
order/semantics), note the versions affected, and add a compatibility section
advising how consumers can update code (and any temporary shims/aliases if you
provide them) so clients can upgrade safely. Ensure the release notes reference
the exact symbols sendVideoReaction, sendReaction, VideoReactionResponse,
ReactionResponse, SendVideoReactionRequest, SendReactionRequest,
SendVideoReactionResponse, SendReactionResponse and clearly call out the user
event constructor restructuring.

In
`@stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/CallState.kt`:
- Around line 663-664: CallState currently exposes generator-owned model
VideoReactionResponse via internal _reactions/val reactions which causes API
churn when OpenAPI regenerates; introduce a stable SDK domain type (e.g.,
VideoReaction or ReactionModel) and change CallState._reactions and reactions to
StateFlow<List<YourDomainReaction>>; map incoming VideoReactionResponse ->
YourDomainReaction at the boundary where responses are parsed/received and map
YourDomainReaction -> VideoReactionRequest (or the generator type) when calling
Call.sendReaction(); update usages referencing Reaction.response to use the new
domain type fields or provide conversion helpers so generator-owned names no
longer leak through CallState.reactions, Reaction.response, and
Call.sendReaction().

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: b92fd1c9-89ca-4850-832d-a93ba7d292cc

📥 Commits

Reviewing files that changed from the base of the PR and between 9128cd3 and 6b1bd24.

⛔ Files ignored due to path filters (32)
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/apis/ProductvideoApi.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/infrastructure/Serializer.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/CallReactionEvent.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/CallStatsReportReadyEvent.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/CoordinatesResponse.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/Credentials.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/DeliveryReceipts.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/ICEServerResponse.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/IndividualRecordingSettingsRequest.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/IndividualRecordingSettingsResponse.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/JoinCallRequest.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/LocationResponse.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/PrivacySettings.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/ResolveSipAuthRequest.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/ResolveSipAuthResponse.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/ResolveSipInboundRequest.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/SFULocationResponse.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/SIPChallengeRequest.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/SendVideoReactionRequest.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/SendVideoReactionResponse.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/SipInboundCredentials.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/SortParamRequest.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/TypingIndicators.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/UserBannedEvent.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/UserDeactivatedEvent.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/UserDeletedEvent.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/UserPresenceChangedEvent.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/UserReactivatedEvent.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/UserResponseCommonFields.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/UserUnbannedEvent.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/VideoEvent.kt is excluded by !**/generated/**
  • stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/VideoReactionResponse.kt is excluded by !**/generated/**
📒 Files selected for processing (7)
  • stream-video-android-core/api/stream-video-android-core.api
  • stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/Call.kt
  • stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/CallState.kt
  • stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/StreamVideoClient.kt
  • stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/model/IceServer.kt
  • stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/model/Reaction.kt
  • stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/utils/DomainUtils.kt

@github-actions
Copy link
Contributor

github-actions bot commented Mar 12, 2026

SDK Size Comparison 📏

SDK Before After Difference Status
stream-video-android-core 12.00 MB 12.00 MB 0.00 MB 🟢
stream-video-android-ui-xml 5.68 MB 5.68 MB 0.00 MB 🟢
stream-video-android-ui-compose 6.27 MB 6.27 MB 0.00 MB 🟢

@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
21.1% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

@PratimMallick PratimMallick changed the base branch from develop to develop-v2 March 12, 2026 15:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr:internal Internal or infra-only changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants