Skip to content

Commit 9bb07b2

Browse files
authored
Merge pull request #227 from GetStream/feature/cha-2563-retention-policy-endpoints
[CHA-2563] Add retention policy integration tests
2 parents 80b45fe + b8313a9 commit 9bb07b2

File tree

13 files changed

+3772
-45
lines changed

13 files changed

+3772
-45
lines changed

getstream/chat/async_rest_client.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -726,6 +726,7 @@ async def create_channel_type(
726726
blocklists: Optional[List[BlockListOptions]] = None,
727727
commands: Optional[List[str]] = None,
728728
permissions: Optional[List[PolicyRequest]] = None,
729+
chat_preferences: Optional[ChatPreferences] = None,
729730
grants: Optional[Dict[str, List[str]]] = None,
730731
) -> StreamResponse[CreateChannelTypeResponse]:
731732
json = CreateChannelTypeRequest(
@@ -760,6 +761,7 @@ async def create_channel_type(
760761
blocklists=blocklists,
761762
commands=commands,
762763
permissions=permissions,
764+
chat_preferences=chat_preferences,
763765
grants=grants,
764766
).to_dict()
765767
return await self.post(
@@ -825,6 +827,7 @@ async def update_channel_type(
825827
commands: Optional[List[str]] = None,
826828
permissions: Optional[List[PolicyRequest]] = None,
827829
automod_thresholds: Optional[Thresholds] = None,
830+
chat_preferences: Optional[ChatPreferences] = None,
828831
grants: Optional[Dict[str, List[str]]] = None,
829832
) -> StreamResponse[UpdateChannelTypeResponse]:
830833
path_params = {
@@ -864,6 +867,7 @@ async def update_channel_type(
864867
commands=commands,
865868
permissions=permissions,
866869
automod_thresholds=automod_thresholds,
870+
chat_preferences=chat_preferences,
867871
grants=grants,
868872
).to_dict()
869873
return await self.put(
@@ -1486,6 +1490,56 @@ async def query_reminders(
14861490
"/api/v2/chat/reminders/query", QueryRemindersResponse, json=json
14871491
)
14881492

1493+
@telemetry.operation_name("getstream.api.chat.get_retention_policy")
1494+
async def get_retention_policy(self) -> StreamResponse[GetRetentionPolicyResponse]:
1495+
return await self.get(
1496+
"/api/v2/chat/retention_policy", GetRetentionPolicyResponse
1497+
)
1498+
1499+
@telemetry.operation_name("getstream.api.chat.set_retention_policy")
1500+
async def set_retention_policy(
1501+
self, max_age_hours: int, policy: str
1502+
) -> StreamResponse[SetRetentionPolicyResponse]:
1503+
json = SetRetentionPolicyRequest(
1504+
max_age_hours=max_age_hours, policy=policy
1505+
).to_dict()
1506+
return await self.post(
1507+
"/api/v2/chat/retention_policy", SetRetentionPolicyResponse, json=json
1508+
)
1509+
1510+
@telemetry.operation_name("getstream.api.chat.delete_retention_policy")
1511+
async def delete_retention_policy(
1512+
self, policy: str
1513+
) -> StreamResponse[DeleteRetentionPolicyResponse]:
1514+
json = DeleteRetentionPolicyRequest(policy=policy).to_dict()
1515+
return await self.post(
1516+
"/api/v2/chat/retention_policy/delete",
1517+
DeleteRetentionPolicyResponse,
1518+
json=json,
1519+
)
1520+
1521+
@telemetry.operation_name("getstream.api.chat.get_retention_policy_runs")
1522+
async def get_retention_policy_runs(
1523+
self,
1524+
limit: Optional[int] = None,
1525+
next: Optional[str] = None,
1526+
prev: Optional[str] = None,
1527+
sort: Optional[List[SortParamRequest]] = None,
1528+
filter_conditions: Optional[Dict[str, object]] = None,
1529+
) -> StreamResponse[GetRetentionPolicyRunsResponse]:
1530+
json = GetRetentionPolicyRunsRequest(
1531+
limit=limit,
1532+
next=next,
1533+
prev=prev,
1534+
sort=sort,
1535+
filter_conditions=filter_conditions,
1536+
).to_dict()
1537+
return await self.post(
1538+
"/api/v2/chat/retention_policy/runs",
1539+
GetRetentionPolicyRunsResponse,
1540+
json=json,
1541+
)
1542+
14891543
@telemetry.operation_name("getstream.api.chat.search")
14901544
async def search(
14911545
self, payload: Optional[SearchPayload] = None

getstream/chat/rest_client.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -722,6 +722,7 @@ def create_channel_type(
722722
blocklists: Optional[List[BlockListOptions]] = None,
723723
commands: Optional[List[str]] = None,
724724
permissions: Optional[List[PolicyRequest]] = None,
725+
chat_preferences: Optional[ChatPreferences] = None,
725726
grants: Optional[Dict[str, List[str]]] = None,
726727
) -> StreamResponse[CreateChannelTypeResponse]:
727728
json = CreateChannelTypeRequest(
@@ -756,6 +757,7 @@ def create_channel_type(
756757
blocklists=blocklists,
757758
commands=commands,
758759
permissions=permissions,
760+
chat_preferences=chat_preferences,
759761
grants=grants,
760762
).to_dict()
761763
return self.post(
@@ -819,6 +821,7 @@ def update_channel_type(
819821
commands: Optional[List[str]] = None,
820822
permissions: Optional[List[PolicyRequest]] = None,
821823
automod_thresholds: Optional[Thresholds] = None,
824+
chat_preferences: Optional[ChatPreferences] = None,
822825
grants: Optional[Dict[str, List[str]]] = None,
823826
) -> StreamResponse[UpdateChannelTypeResponse]:
824827
path_params = {
@@ -858,6 +861,7 @@ def update_channel_type(
858861
commands=commands,
859862
permissions=permissions,
860863
automod_thresholds=automod_thresholds,
864+
chat_preferences=chat_preferences,
861865
grants=grants,
862866
).to_dict()
863867
return self.put(
@@ -1476,6 +1480,54 @@ def query_reminders(
14761480
"/api/v2/chat/reminders/query", QueryRemindersResponse, json=json
14771481
)
14781482

1483+
@telemetry.operation_name("getstream.api.chat.get_retention_policy")
1484+
def get_retention_policy(self) -> StreamResponse[GetRetentionPolicyResponse]:
1485+
return self.get("/api/v2/chat/retention_policy", GetRetentionPolicyResponse)
1486+
1487+
@telemetry.operation_name("getstream.api.chat.set_retention_policy")
1488+
def set_retention_policy(
1489+
self, max_age_hours: int, policy: str
1490+
) -> StreamResponse[SetRetentionPolicyResponse]:
1491+
json = SetRetentionPolicyRequest(
1492+
max_age_hours=max_age_hours, policy=policy
1493+
).to_dict()
1494+
return self.post(
1495+
"/api/v2/chat/retention_policy", SetRetentionPolicyResponse, json=json
1496+
)
1497+
1498+
@telemetry.operation_name("getstream.api.chat.delete_retention_policy")
1499+
def delete_retention_policy(
1500+
self, policy: str
1501+
) -> StreamResponse[DeleteRetentionPolicyResponse]:
1502+
json = DeleteRetentionPolicyRequest(policy=policy).to_dict()
1503+
return self.post(
1504+
"/api/v2/chat/retention_policy/delete",
1505+
DeleteRetentionPolicyResponse,
1506+
json=json,
1507+
)
1508+
1509+
@telemetry.operation_name("getstream.api.chat.get_retention_policy_runs")
1510+
def get_retention_policy_runs(
1511+
self,
1512+
limit: Optional[int] = None,
1513+
next: Optional[str] = None,
1514+
prev: Optional[str] = None,
1515+
sort: Optional[List[SortParamRequest]] = None,
1516+
filter_conditions: Optional[Dict[str, object]] = None,
1517+
) -> StreamResponse[GetRetentionPolicyRunsResponse]:
1518+
json = GetRetentionPolicyRunsRequest(
1519+
limit=limit,
1520+
next=next,
1521+
prev=prev,
1522+
sort=sort,
1523+
filter_conditions=filter_conditions,
1524+
).to_dict()
1525+
return self.post(
1526+
"/api/v2/chat/retention_policy/runs",
1527+
GetRetentionPolicyRunsResponse,
1528+
json=json,
1529+
)
1530+
14791531
@telemetry.operation_name("getstream.api.chat.search")
14801532
def search(
14811533
self, payload: Optional[SearchPayload] = None

getstream/common/async_rest_client.py

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ async def update_app(
7676
image_moderation_labels: Optional[List[str]] = None,
7777
user_search_disallowed_roles: Optional[List[str]] = None,
7878
webhook_events: Optional[List[str]] = None,
79+
activity_metrics_config: Optional[Dict[str, int]] = None,
7980
apn_config: Optional[APNConfig] = None,
8081
async_moderation_config: Optional[AsyncModerationConfiguration] = None,
8182
datadog_info: Optional[DataDogInfo] = None,
@@ -129,6 +130,7 @@ async def update_app(
129130
image_moderation_labels=image_moderation_labels,
130131
user_search_disallowed_roles=user_search_disallowed_roles,
131132
webhook_events=webhook_events,
133+
activity_metrics_config=activity_metrics_config,
132134
apn_config=apn_config,
133135
async_moderation_config=async_moderation_config,
134136
datadog_info=datadog_info,
@@ -460,6 +462,42 @@ async def create_import_v2_task(
460462
"/api/v2/imports/v2", CreateImportV2TaskResponse, json=json
461463
)
462464

465+
@telemetry.operation_name("getstream.api.common.delete_importer_external_storage")
466+
async def delete_importer_external_storage(
467+
self,
468+
) -> StreamResponse[DeleteExternalStorageResponse]:
469+
return await self.delete(
470+
"/api/v2/imports/v2/external-storage", DeleteExternalStorageResponse
471+
)
472+
473+
@telemetry.operation_name("getstream.api.common.get_importer_external_storage")
474+
async def get_importer_external_storage(
475+
self,
476+
) -> StreamResponse[GetExternalStorageResponse]:
477+
return await self.get(
478+
"/api/v2/imports/v2/external-storage", GetExternalStorageResponse
479+
)
480+
481+
@telemetry.operation_name("getstream.api.common.upsert_importer_external_storage")
482+
async def upsert_importer_external_storage(
483+
self, type: str, aws_s3: Optional[UpsertExternalStorageAWSS3Request] = None
484+
) -> StreamResponse[UpsertExternalStorageResponse]:
485+
json = UpsertExternalStorageRequest(type=type, aws_s3=aws_s3).to_dict()
486+
return await self.put(
487+
"/api/v2/imports/v2/external-storage",
488+
UpsertExternalStorageResponse,
489+
json=json,
490+
)
491+
492+
@telemetry.operation_name("getstream.api.common.validate_importer_external_storage")
493+
async def validate_importer_external_storage(
494+
self,
495+
) -> StreamResponse[ValidateExternalStorageResponse]:
496+
return await self.post(
497+
"/api/v2/imports/v2/external-storage/validate",
498+
ValidateExternalStorageResponse,
499+
)
500+
463501
@telemetry.operation_name("getstream.api.common.delete_import_v2_task")
464502
async def delete_import_v2_task(
465503
self, id: str
@@ -1025,13 +1063,17 @@ async def update_user_group(
10251063

10261064
@telemetry.operation_name("getstream.api.common.add_user_group_members")
10271065
async def add_user_group_members(
1028-
self, id: str, member_ids: List[str], team_id: Optional[str] = None
1066+
self,
1067+
id: str,
1068+
member_ids: List[str],
1069+
as_admin: Optional[bool] = None,
1070+
team_id: Optional[str] = None,
10291071
) -> StreamResponse[AddUserGroupMembersResponse]:
10301072
path_params = {
10311073
"id": id,
10321074
}
10331075
json = AddUserGroupMembersRequest(
1034-
member_ids=member_ids, team_id=team_id
1076+
member_ids=member_ids, as_admin=as_admin, team_id=team_id
10351077
).to_dict()
10361078
return await self.post(
10371079
"/api/v2/usergroups/{id}/members",

getstream/common/rest_client.py

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ def update_app(
7676
image_moderation_labels: Optional[List[str]] = None,
7777
user_search_disallowed_roles: Optional[List[str]] = None,
7878
webhook_events: Optional[List[str]] = None,
79+
activity_metrics_config: Optional[Dict[str, int]] = None,
7980
apn_config: Optional[APNConfig] = None,
8081
async_moderation_config: Optional[AsyncModerationConfiguration] = None,
8182
datadog_info: Optional[DataDogInfo] = None,
@@ -129,6 +130,7 @@ def update_app(
129130
image_moderation_labels=image_moderation_labels,
130131
user_search_disallowed_roles=user_search_disallowed_roles,
131132
webhook_events=webhook_events,
133+
activity_metrics_config=activity_metrics_config,
132134
apn_config=apn_config,
133135
async_moderation_config=async_moderation_config,
134136
datadog_info=datadog_info,
@@ -450,6 +452,42 @@ def create_import_v2_task(
450452
).to_dict()
451453
return self.post("/api/v2/imports/v2", CreateImportV2TaskResponse, json=json)
452454

455+
@telemetry.operation_name("getstream.api.common.delete_importer_external_storage")
456+
def delete_importer_external_storage(
457+
self,
458+
) -> StreamResponse[DeleteExternalStorageResponse]:
459+
return self.delete(
460+
"/api/v2/imports/v2/external-storage", DeleteExternalStorageResponse
461+
)
462+
463+
@telemetry.operation_name("getstream.api.common.get_importer_external_storage")
464+
def get_importer_external_storage(
465+
self,
466+
) -> StreamResponse[GetExternalStorageResponse]:
467+
return self.get(
468+
"/api/v2/imports/v2/external-storage", GetExternalStorageResponse
469+
)
470+
471+
@telemetry.operation_name("getstream.api.common.upsert_importer_external_storage")
472+
def upsert_importer_external_storage(
473+
self, type: str, aws_s3: Optional[UpsertExternalStorageAWSS3Request] = None
474+
) -> StreamResponse[UpsertExternalStorageResponse]:
475+
json = UpsertExternalStorageRequest(type=type, aws_s3=aws_s3).to_dict()
476+
return self.put(
477+
"/api/v2/imports/v2/external-storage",
478+
UpsertExternalStorageResponse,
479+
json=json,
480+
)
481+
482+
@telemetry.operation_name("getstream.api.common.validate_importer_external_storage")
483+
def validate_importer_external_storage(
484+
self,
485+
) -> StreamResponse[ValidateExternalStorageResponse]:
486+
return self.post(
487+
"/api/v2/imports/v2/external-storage/validate",
488+
ValidateExternalStorageResponse,
489+
)
490+
453491
@telemetry.operation_name("getstream.api.common.delete_import_v2_task")
454492
def delete_import_v2_task(
455493
self, id: str
@@ -1001,13 +1039,17 @@ def update_user_group(
10011039

10021040
@telemetry.operation_name("getstream.api.common.add_user_group_members")
10031041
def add_user_group_members(
1004-
self, id: str, member_ids: List[str], team_id: Optional[str] = None
1042+
self,
1043+
id: str,
1044+
member_ids: List[str],
1045+
as_admin: Optional[bool] = None,
1046+
team_id: Optional[str] = None,
10051047
) -> StreamResponse[AddUserGroupMembersResponse]:
10061048
path_params = {
10071049
"id": id,
10081050
}
10091051
json = AddUserGroupMembersRequest(
1010-
member_ids=member_ids, team_id=team_id
1052+
member_ids=member_ids, as_admin=as_admin, team_id=team_id
10111053
).to_dict()
10121054
return self.post(
10131055
"/api/v2/usergroups/{id}/members",

0 commit comments

Comments
 (0)