Skip to content

Commit 1317433

Browse files
committed
feat: update by openapi refactor
1 parent 9fd7d28 commit 1317433

67 files changed

Lines changed: 1721 additions & 27 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ call.getOrCreate(
9191
```
9292

9393
> **Note:** When constructing models, always use the **builder pattern** (e.g. `UserRequest.builder().id("id").build()`).
94-
> Positional constructor usage is not supported and may break across SDK updates as parameter order is not guaranteed.
94+
> While some generated models expose positional constructors (for example via Lombok's `@AllArgsConstructor`), their parameter order is not part of the public API and may change between releases; using positional constructors is therefore strongly discouraged and may break across SDK updates.
9595
9696
## Development
9797

generate.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ set -ex
1313
# cd in API repo, generate new spec and then generate code from it
1414
( cd $SOURCE_PATH ; make openapi ; go run ./cmd/chat-manager openapi generate-client --language java --spec ./releases/v2/serverside-api.yaml --output ../stream-sdk-java )
1515

16-
sed -i '' '/^ @JsonProperty("Role")$/N;/\n private String role;$/d' src/main/java/io/getstream/models/CallParticipant.java
16+
perl -i -0pe 's/ \@JsonProperty\("Role"\)\n private String role;\n//g' src/main/java/io/getstream/models/CallParticipant.java
1717

1818
# Clean up test files that may exist in main source from older generator versions
1919
# (generator now outputs tests directly to src/test/)

src/main/java/io/getstream/Webhook.java

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
package io.getstream;
44

5+
import com.fasterxml.jackson.databind.DeserializationFeature;
56
import com.fasterxml.jackson.databind.JsonNode;
67
import com.fasterxml.jackson.databind.ObjectMapper;
78
import io.getstream.models.ActivityAddedEvent;
@@ -104,6 +105,7 @@
104105
import io.getstream.models.FeedDeletedEvent;
105106
import io.getstream.models.FeedGroupChangedEvent;
106107
import io.getstream.models.FeedGroupDeletedEvent;
108+
import io.getstream.models.FeedGroupRestoredEvent;
107109
import io.getstream.models.FeedMemberAddedEvent;
108110
import io.getstream.models.FeedMemberRemovedEvent;
109111
import io.getstream.models.FeedMemberUpdatedEvent;
@@ -154,6 +156,11 @@
154156
import io.getstream.models.UserDeactivatedEvent;
155157
import io.getstream.models.UserDeletedEvent;
156158
import io.getstream.models.UserFlaggedEvent;
159+
import io.getstream.models.UserGroupCreatedEvent;
160+
import io.getstream.models.UserGroupDeletedEvent;
161+
import io.getstream.models.UserGroupMemberAddedEvent;
162+
import io.getstream.models.UserGroupMemberRemovedEvent;
163+
import io.getstream.models.UserGroupUpdatedEvent;
157164
import io.getstream.models.UserMessagesDeletedEvent;
158165
import io.getstream.models.UserMutedEvent;
159166
import io.getstream.models.UserReactivatedEvent;
@@ -172,7 +179,8 @@
172179
/** Webhook utilities for Stream webhooks. */
173180
public class Webhook {
174181
private static final String HMAC_SHA256 = "HmacSHA256";
175-
private static final ObjectMapper objectMapper = new ObjectMapper();
182+
private static final ObjectMapper objectMapper =
183+
new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
176184

177185
/** Webhook event type constants. */
178186
public static class EventType {
@@ -289,6 +297,7 @@ public static class EventType {
289297
public static final String FEEDS_FEED_UPDATED = "feeds.feed.updated";
290298
public static final String FEEDS_FEED_GROUP_CHANGED = "feeds.feed_group.changed";
291299
public static final String FEEDS_FEED_GROUP_DELETED = "feeds.feed_group.deleted";
300+
public static final String FEEDS_FEED_GROUP_RESTORED = "feeds.feed_group.restored";
292301
public static final String FEEDS_FEED_MEMBER_ADDED = "feeds.feed_member.added";
293302
public static final String FEEDS_FEED_MEMBER_REMOVED = "feeds.feed_member.removed";
294303
public static final String FEEDS_FEED_MEMBER_UPDATED = "feeds.feed_member.updated";
@@ -340,6 +349,11 @@ public static class EventType {
340349
public static final String USER_UNMUTED = "user.unmuted";
341350
public static final String USER_UNREAD_MESSAGE_REMINDER = "user.unread_message_reminder";
342351
public static final String USER_UPDATED = "user.updated";
352+
public static final String USER_GROUP_CREATED = "user_group.created";
353+
public static final String USER_GROUP_DELETED = "user_group.deleted";
354+
public static final String USER_GROUP_MEMBER_ADDED = "user_group.member_added";
355+
public static final String USER_GROUP_MEMBER_REMOVED = "user_group.member_removed";
356+
public static final String USER_GROUP_UPDATED = "user_group.updated";
343357
}
344358

345359
/**
@@ -376,11 +390,7 @@ public static String getEventType(String rawEvent) {
376390
* @throws WebhookException if the event type is unknown or deserialization fails
377391
*/
378392
public static Object parseWebhookEvent(byte[] rawEvent) throws WebhookException {
379-
String eventType = getEventType(rawEvent);
380-
if (eventType == null || eventType.isEmpty()) {
381-
throw new WebhookException("Webhook payload missing 'type' field");
382-
}
383-
393+
String eventType = extractEventType(rawEvent);
384394
try {
385395
Class<?> eventClass = getEventClass(eventType);
386396
return objectMapper.readValue(rawEvent, eventClass);
@@ -389,6 +399,20 @@ public static Object parseWebhookEvent(byte[] rawEvent) throws WebhookException
389399
}
390400
}
391401

402+
private static String extractEventType(byte[] rawEvent) throws WebhookException {
403+
JsonNode node;
404+
try {
405+
node = objectMapper.readTree(rawEvent);
406+
} catch (IOException e) {
407+
throw new WebhookException("Webhook payload is not valid JSON: " + e.getMessage(), e);
408+
}
409+
JsonNode typeNode = node.get("type");
410+
if (typeNode == null || typeNode.asText().isEmpty()) {
411+
throw new WebhookException("Webhook payload missing 'type' field");
412+
}
413+
return typeNode.asText();
414+
}
415+
392416
/**
393417
* Deserialize a raw webhook payload into a typed event object.
394418
*
@@ -620,6 +644,8 @@ private static Class<?> getEventClass(String eventType) throws WebhookException
620644
return FeedGroupChangedEvent.class;
621645
case "feeds.feed_group.deleted":
622646
return FeedGroupDeletedEvent.class;
647+
case "feeds.feed_group.restored":
648+
return FeedGroupRestoredEvent.class;
623649
case "feeds.feed_member.added":
624650
return FeedMemberAddedEvent.class;
625651
case "feeds.feed_member.removed":
@@ -722,6 +748,16 @@ private static Class<?> getEventClass(String eventType) throws WebhookException
722748
return UserUnreadReminderEvent.class;
723749
case "user.updated":
724750
return UserUpdatedEvent.class;
751+
case "user_group.created":
752+
return UserGroupCreatedEvent.class;
753+
case "user_group.deleted":
754+
return UserGroupDeletedEvent.class;
755+
case "user_group.member_added":
756+
return UserGroupMemberAddedEvent.class;
757+
case "user_group.member_removed":
758+
return UserGroupMemberRemovedEvent.class;
759+
case "user_group.updated":
760+
return UserGroupUpdatedEvent.class;
725761
default:
726762
throw new WebhookException("Unknown webhook event type: " + eventType);
727763
}

src/main/java/io/getstream/models/AWSRekognitionRule.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
package io.getstream.models;
1414

1515
import com.fasterxml.jackson.annotation.JsonProperty;
16+
import java.util.Map;
17+
import org.jetbrains.annotations.Nullable;
1618

1719
@lombok.Data
1820
@lombok.Builder
@@ -28,4 +30,8 @@ public class AWSRekognitionRule {
2830

2931
@JsonProperty("min_confidence")
3032
private Double minConfidence;
33+
34+
@Nullable
35+
@JsonProperty("subclassifications")
36+
private Map<String, Boolean> subclassifications;
3137
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
* ========================================================================
3+
* WARNING: GENERATED CODE -- DO NOT EDIT!
4+
* ========================================================================
5+
*
6+
* This file was auto-generated by GetStream internal OpenAPI
7+
*
8+
* Any modifications to this file will be lost upon regeneration.
9+
* To make changes, please modify the source templates and regenerate.
10+
*
11+
* ========================================================================
12+
*/
13+
package io.getstream.models;
14+
15+
import com.fasterxml.jackson.annotation.JsonProperty;
16+
import java.util.List;
17+
import org.jetbrains.annotations.Nullable;
18+
19+
/**
20+
* Add user group members Adds members to a user group. All user IDs must exist. The operation is
21+
* all-or-nothing.
22+
*/
23+
@lombok.Data
24+
@lombok.Builder
25+
@lombok.NoArgsConstructor
26+
@lombok.AllArgsConstructor
27+
public class AddUserGroupMembersRequest {
28+
29+
@JsonProperty("member_ids")
30+
private List<String> memberIds;
31+
32+
@Nullable
33+
@JsonProperty("team_id")
34+
private String teamID;
35+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
* ========================================================================
3+
* WARNING: GENERATED CODE -- DO NOT EDIT!
4+
* ========================================================================
5+
*
6+
* This file was auto-generated by GetStream internal OpenAPI
7+
*
8+
* Any modifications to this file will be lost upon regeneration.
9+
* To make changes, please modify the source templates and regenerate.
10+
*
11+
* ========================================================================
12+
*/
13+
package io.getstream.models;
14+
15+
import com.fasterxml.jackson.annotation.JsonProperty;
16+
import org.jetbrains.annotations.Nullable;
17+
18+
/** Response for adding members to a user group */
19+
@lombok.Data
20+
@lombok.Builder
21+
@lombok.NoArgsConstructor
22+
@lombok.AllArgsConstructor
23+
public class AddUserGroupMembersResponse {
24+
25+
@JsonProperty("duration")
26+
private String duration;
27+
28+
@Nullable
29+
@JsonProperty("user_group")
30+
private UserGroupResponse userGroup;
31+
}

src/main/java/io/getstream/models/AppResponseFields.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ public class AppResponseFields {
6363
@JsonProperty("max_aggregated_activities_length")
6464
private Integer maxAggregatedActivitiesLength;
6565

66+
@JsonProperty("moderation_audio_call_moderation_enabled")
67+
private Boolean moderationAudioCallModerationEnabled;
68+
6669
@JsonProperty("moderation_enabled")
6770
private Boolean moderationEnabled;
6871

@@ -72,6 +75,9 @@ public class AppResponseFields {
7275
@JsonProperty("moderation_multitenant_blocklist_enabled")
7376
private Boolean moderationMultitenantBlocklistEnabled;
7477

78+
@JsonProperty("moderation_video_call_moderation_enabled")
79+
private Boolean moderationVideoCallModerationEnabled;
80+
7581
@JsonProperty("moderation_webhook_url")
7682
private String moderationWebhookUrl;
7783

src/main/java/io/getstream/models/CallStatsReportReadyEvent.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
import com.fasterxml.jackson.annotation.JsonProperty;
1616
import java.util.Date;
17+
import java.util.List;
18+
import org.jetbrains.annotations.Nullable;
1719

1820
/** This event is sent when the insights report is ready */
1921
@lombok.Data
@@ -33,4 +35,12 @@ public class CallStatsReportReadyEvent {
3335

3436
@JsonProperty("type")
3537
private String type;
38+
39+
@Nullable
40+
@JsonProperty("is_trimmed")
41+
private Boolean isTrimmed;
42+
43+
@Nullable
44+
@JsonProperty("participants_overview")
45+
private List<CallStatsParticipant> participantsOverview;
3646
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
* ========================================================================
3+
* WARNING: GENERATED CODE -- DO NOT EDIT!
4+
* ========================================================================
5+
*
6+
* This file was auto-generated by GetStream internal OpenAPI
7+
*
8+
* Any modifications to this file will be lost upon regeneration.
9+
* To make changes, please modify the source templates and regenerate.
10+
*
11+
* ========================================================================
12+
*/
13+
package io.getstream.models;
14+
15+
import com.fasterxml.jackson.annotation.JsonProperty;
16+
import org.jetbrains.annotations.Nullable;
17+
18+
@lombok.Data
19+
@lombok.Builder
20+
@lombok.NoArgsConstructor
21+
@lombok.AllArgsConstructor
22+
public class CallViolationCountParameters {
23+
24+
@Nullable
25+
@JsonProperty("threshold")
26+
private Integer threshold;
27+
28+
@Nullable
29+
@JsonProperty("time_window")
30+
private String timeWindow;
31+
}

src/main/java/io/getstream/models/ConfigResponse.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.fasterxml.jackson.annotation.JsonProperty;
1616
import java.util.Date;
1717
import java.util.List;
18+
import java.util.Map;
1819
import org.jetbrains.annotations.Nullable;
1920

2021
@lombok.Data
@@ -45,6 +46,10 @@ public class ConfigResponse {
4546
@JsonProperty("ai_image_config")
4647
private AIImageConfig aiImageConfig;
4748

49+
@Nullable
50+
@JsonProperty("ai_image_subclassifications")
51+
private Map<String, List<String>> aiImageSubclassifications;
52+
4853
@Nullable
4954
@JsonProperty("ai_text_config")
5055
private AITextConfig aiTextConfig;

0 commit comments

Comments
 (0)