-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmoderation.go
More file actions
263 lines (227 loc) · 15 KB
/
moderation.go
File metadata and controls
263 lines (227 loc) · 15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT.
package getstream
import (
"context"
)
type ModerationClient struct {
client *Client
}
func NewModerationClient(client *Client) *ModerationClient {
return &ModerationClient{
client: client,
}
}
// Insert a moderation action log entry. Server-side only. Used by product services to log moderation-related actions.
func (c *ModerationClient) InsertActionLog(ctx context.Context, request *InsertActionLogRequest) (*StreamResponse[InsertActionLogResponse], error) {
var result InsertActionLogResponse
res, err := MakeRequest[InsertActionLogRequest, InsertActionLogResponse](c.client, ctx, "POST", "/api/v2/moderation/action_logs", nil, request, &result, nil)
return res, err
}
// Appeal against the moderation decision
func (c *ModerationClient) Appeal(ctx context.Context, request *AppealRequest) (*StreamResponse[AppealResponse], error) {
var result AppealResponse
res, err := MakeRequest[AppealRequest, AppealResponse](c.client, ctx, "POST", "/api/v2/moderation/appeal", nil, request, &result, nil)
return res, err
}
// Retrieve a specific appeal item by its ID
func (c *ModerationClient) GetAppeal(ctx context.Context, id string, request *GetAppealRequest) (*StreamResponse[GetAppealResponse], error) {
var result GetAppealResponse
pathParams := map[string]string{
"id": id,
}
res, err := MakeRequest[any, GetAppealResponse](c.client, ctx, "GET", "/api/v2/moderation/appeal/{id}", nil, nil, &result, pathParams)
return res, err
}
// Query Appeals
func (c *ModerationClient) QueryAppeals(ctx context.Context, request *QueryAppealsRequest) (*StreamResponse[QueryAppealsResponse], error) {
var result QueryAppealsResponse
res, err := MakeRequest[QueryAppealsRequest, QueryAppealsResponse](c.client, ctx, "POST", "/api/v2/moderation/appeals", nil, request, &result, nil)
return res, err
}
// Ban a user from a channel or the entire app
func (c *ModerationClient) Ban(ctx context.Context, request *BanRequest) (*StreamResponse[BanResponse], error) {
var result BanResponse
res, err := MakeRequest[BanRequest, BanResponse](c.client, ctx, "POST", "/api/v2/moderation/ban", nil, request, &result, nil)
return res, err
}
// Moderate multiple images in bulk using a CSV file
func (c *ModerationClient) BulkImageModeration(ctx context.Context, request *BulkImageModerationRequest) (*StreamResponse[BulkImageModerationResponse], error) {
var result BulkImageModerationResponse
res, err := MakeRequest[BulkImageModerationRequest, BulkImageModerationResponse](c.client, ctx, "POST", "/api/v2/moderation/bulk_image_moderation", nil, request, &result, nil)
return res, err
}
// Enable or disable moderation bypass for a user. This endpoint is server-side only.
func (c *ModerationClient) Bypass(ctx context.Context, request *BypassRequest) (*StreamResponse[BypassResponse], error) {
var result BypassResponse
res, err := MakeRequest[BypassRequest, BypassResponse](c.client, ctx, "POST", "/api/v2/moderation/bypass", nil, request, &result, nil)
return res, err
}
// Run moderation checks on the provided content
func (c *ModerationClient) Check(ctx context.Context, request *CheckRequest) (*StreamResponse[CheckResponse], error) {
var result CheckResponse
res, err := MakeRequest[CheckRequest, CheckResponse](c.client, ctx, "POST", "/api/v2/moderation/check", nil, request, &result, nil)
return res, err
}
// Verifies that the configured IAM role ARN can access private S3 images for moderation. Optionally accepts a stream+s3:// URL to check access to a specific object.
func (c *ModerationClient) CheckS3Access(ctx context.Context, request *CheckS3AccessRequest) (*StreamResponse[CheckS3AccessResponse], error) {
var result CheckS3AccessResponse
res, err := MakeRequest[CheckS3AccessRequest, CheckS3AccessResponse](c.client, ctx, "POST", "/api/v2/moderation/check_s3_access", nil, request, &result, nil)
return res, err
}
// Create a new moderation configuration or update an existing one. Configure settings for content filtering, AI analysis, toxicity detection, and other moderation features.
func (c *ModerationClient) UpsertConfig(ctx context.Context, request *UpsertConfigRequest) (*StreamResponse[UpsertConfigResponse], error) {
var result UpsertConfigResponse
res, err := MakeRequest[UpsertConfigRequest, UpsertConfigResponse](c.client, ctx, "POST", "/api/v2/moderation/config", nil, request, &result, nil)
return res, err
}
// Delete a specific moderation policy by its name
func (c *ModerationClient) DeleteConfig(ctx context.Context, key string, request *DeleteConfigRequest) (*StreamResponse[DeleteModerationConfigResponse], error) {
var result DeleteModerationConfigResponse
pathParams := map[string]string{
"key": key,
}
params := extractQueryParams(request)
res, err := MakeRequest[any, DeleteModerationConfigResponse](c.client, ctx, "DELETE", "/api/v2/moderation/config/{key}", params, nil, &result, pathParams)
return res, err
}
// Retrieve a specific moderation configuration by its key and team. This configuration contains settings for various moderation features like toxicity detection, AI analysis, and filtering rules.
func (c *ModerationClient) GetConfig(ctx context.Context, key string, request *GetConfigRequest) (*StreamResponse[GetConfigResponse], error) {
var result GetConfigResponse
pathParams := map[string]string{
"key": key,
}
params := extractQueryParams(request)
res, err := MakeRequest[any, GetConfigResponse](c.client, ctx, "GET", "/api/v2/moderation/config/{key}", params, nil, &result, pathParams)
return res, err
}
// Search and filter moderation configurations across your application. This endpoint is designed for building moderation dashboards and managing multiple configuration sets.
func (c *ModerationClient) QueryModerationConfigs(ctx context.Context, request *QueryModerationConfigsRequest) (*StreamResponse[QueryModerationConfigsResponse], error) {
var result QueryModerationConfigsResponse
res, err := MakeRequest[QueryModerationConfigsRequest, QueryModerationConfigsResponse](c.client, ctx, "POST", "/api/v2/moderation/configs", nil, request, &result, nil)
return res, err
}
// Custom check, add your own AI model reports to the review queue
func (c *ModerationClient) CustomCheck(ctx context.Context, request *CustomCheckRequest) (*StreamResponse[CustomCheckResponse], error) {
var result CustomCheckResponse
res, err := MakeRequest[CustomCheckRequest, CustomCheckResponse](c.client, ctx, "POST", "/api/v2/moderation/custom_check", nil, request, &result, nil)
return res, err
}
// Delete a specific moderation template by its name
func (c *ModerationClient) V2DeleteTemplate(ctx context.Context, request *V2DeleteTemplateRequest) (*StreamResponse[DeleteModerationTemplateResponse], error) {
var result DeleteModerationTemplateResponse
res, err := MakeRequest[any, DeleteModerationTemplateResponse](c.client, ctx, "DELETE", "/api/v2/moderation/feeds_moderation_template", nil, nil, &result, nil)
return res, err
}
// Retrieve a list of feed moderation templates that define preset moderation rules and configurations. Limited to 100 templates per request.
func (c *ModerationClient) V2QueryTemplates(ctx context.Context, request *V2QueryTemplatesRequest) (*StreamResponse[QueryFeedModerationTemplatesResponse], error) {
var result QueryFeedModerationTemplatesResponse
res, err := MakeRequest[any, QueryFeedModerationTemplatesResponse](c.client, ctx, "GET", "/api/v2/moderation/feeds_moderation_template", nil, nil, &result, nil)
return res, err
}
// Upsert feeds template for moderation
func (c *ModerationClient) V2UpsertTemplate(ctx context.Context, request *V2UpsertTemplateRequest) (*StreamResponse[UpsertModerationTemplateResponse], error) {
var result UpsertModerationTemplateResponse
res, err := MakeRequest[V2UpsertTemplateRequest, UpsertModerationTemplateResponse](c.client, ctx, "POST", "/api/v2/moderation/feeds_moderation_template", nil, request, &result, nil)
return res, err
}
// Flag any type of content (messages, users, channels, activities) for moderation review. Supports custom content types and additional metadata for flagged content.
func (c *ModerationClient) Flag(ctx context.Context, request *FlagRequest) (*StreamResponse[FlagResponse], error) {
var result FlagResponse
res, err := MakeRequest[FlagRequest, FlagResponse](c.client, ctx, "POST", "/api/v2/moderation/flag", nil, request, &result, nil)
return res, err
}
// Returns the number of moderation flags created against a specific user's content. Optionally filter by entity type.
func (c *ModerationClient) GetFlagCount(ctx context.Context, request *GetFlagCountRequest) (*StreamResponse[GetFlagCountResponse], error) {
var result GetFlagCountResponse
res, err := MakeRequest[GetFlagCountRequest, GetFlagCountResponse](c.client, ctx, "POST", "/api/v2/moderation/flag_count", nil, request, &result, nil)
return res, err
}
// Query flags associated with moderation items. This is used for building a moderation dashboard.
func (c *ModerationClient) QueryModerationFlags(ctx context.Context, request *QueryModerationFlagsRequest) (*StreamResponse[QueryModerationFlagsResponse], error) {
var result QueryModerationFlagsResponse
res, err := MakeRequest[QueryModerationFlagsRequest, QueryModerationFlagsResponse](c.client, ctx, "POST", "/api/v2/moderation/flags", nil, request, &result, nil)
return res, err
}
// Run moderation on text and return labels
func (c *ModerationClient) Labels(ctx context.Context, request *LabelsRequest) (*StreamResponse[LabelsResponse], error) {
var result LabelsResponse
res, err := MakeRequest[LabelsRequest, LabelsResponse](c.client, ctx, "POST", "/api/v2/moderation/labels", nil, request, &result, nil)
return res, err
}
// Search and filter moderation label results with support for pagination and sorting. View the history of moderation labels applied to content.
func (c *ModerationClient) QueryLabelResults(ctx context.Context, request *QueryLabelResultsRequest) (*StreamResponse[QueryLabelResultsResponse], error) {
var result QueryLabelResultsResponse
res, err := MakeRequest[QueryLabelResultsRequest, QueryLabelResultsResponse](c.client, ctx, "POST", "/api/v2/moderation/labels/results", nil, request, &result, nil)
return res, err
}
// Search and filter moderation action logs with support for pagination. View the history of moderation actions taken, including who performed them and when.
func (c *ModerationClient) QueryModerationLogs(ctx context.Context, request *QueryModerationLogsRequest) (*StreamResponse[QueryModerationLogsResponse], error) {
var result QueryModerationLogsResponse
res, err := MakeRequest[QueryModerationLogsRequest, QueryModerationLogsResponse](c.client, ctx, "POST", "/api/v2/moderation/logs", nil, request, &result, nil)
return res, err
}
// Create or update a moderation rule that can apply app-wide or to specific moderation configs
func (c *ModerationClient) UpsertModerationRule(ctx context.Context, request *UpsertModerationRuleRequest) (*StreamResponse[UpsertModerationRuleResponse], error) {
var result UpsertModerationRuleResponse
res, err := MakeRequest[UpsertModerationRuleRequest, UpsertModerationRuleResponse](c.client, ctx, "POST", "/api/v2/moderation/moderation_rule", nil, request, &result, nil)
return res, err
}
// Delete an existing moderation rule
func (c *ModerationClient) DeleteModerationRule(ctx context.Context, request *DeleteModerationRuleRequest) (*StreamResponse[DeleteModerationRuleResponse], error) {
var result DeleteModerationRuleResponse
params := extractQueryParams(request)
res, err := MakeRequest[any, DeleteModerationRuleResponse](c.client, ctx, "DELETE", "/api/v2/moderation/moderation_rule/{id}", params, nil, &result, nil)
return res, err
}
// Get a specific moderation rule by ID
func (c *ModerationClient) GetModerationRule(ctx context.Context, request *GetModerationRuleRequest) (*StreamResponse[GetModerationRuleResponse], error) {
var result GetModerationRuleResponse
res, err := MakeRequest[any, GetModerationRuleResponse](c.client, ctx, "GET", "/api/v2/moderation/moderation_rule/{id}", nil, nil, &result, nil)
return res, err
}
// Search and filter moderation rules across your application. This endpoint is designed for building moderation dashboards and managing multiple rule sets.
func (c *ModerationClient) QueryModerationRules(ctx context.Context, request *QueryModerationRulesRequest) (*StreamResponse[QueryModerationRulesResponse], error) {
var result QueryModerationRulesResponse
res, err := MakeRequest[QueryModerationRulesRequest, QueryModerationRulesResponse](c.client, ctx, "POST", "/api/v2/moderation/moderation_rules", nil, request, &result, nil)
return res, err
}
// Mute a user. Mutes are generally not visible to the user you mute, while block is something you notice.
func (c *ModerationClient) Mute(ctx context.Context, request *MuteRequest) (*StreamResponse[MuteResponse], error) {
var result MuteResponse
res, err := MakeRequest[MuteRequest, MuteResponse](c.client, ctx, "POST", "/api/v2/moderation/mute", nil, request, &result, nil)
return res, err
}
// Query review queue items allows you to filter the review queue items. This is used for building a moderation dashboard.
func (c *ModerationClient) QueryReviewQueue(ctx context.Context, request *QueryReviewQueueRequest) (*StreamResponse[QueryReviewQueueResponse], error) {
var result QueryReviewQueueResponse
res, err := MakeRequest[QueryReviewQueueRequest, QueryReviewQueueResponse](c.client, ctx, "POST", "/api/v2/moderation/review_queue", nil, request, &result, nil)
return res, err
}
// Retrieve a specific review queue item by its ID
func (c *ModerationClient) GetReviewQueueItem(ctx context.Context, id string, request *GetReviewQueueItemRequest) (*StreamResponse[GetReviewQueueItemResponse], error) {
var result GetReviewQueueItemResponse
pathParams := map[string]string{
"id": id,
}
res, err := MakeRequest[any, GetReviewQueueItemResponse](c.client, ctx, "GET", "/api/v2/moderation/review_queue/{id}", nil, nil, &result, pathParams)
return res, err
}
// Take action on flagged content, such as marking content as safe, deleting content, banning users, or executing custom moderation actions. Supports various action types with configurable parameters.
func (c *ModerationClient) SubmitAction(ctx context.Context, request *SubmitActionRequest) (*StreamResponse[SubmitActionResponse], error) {
var result SubmitActionResponse
res, err := MakeRequest[SubmitActionRequest, SubmitActionResponse](c.client, ctx, "POST", "/api/v2/moderation/submit_action", nil, request, &result, nil)
return res, err
}
// Unban a user from a channel or globally.
func (c *ModerationClient) Unban(ctx context.Context, request *UnbanRequest) (*StreamResponse[UnbanResponse], error) {
var result UnbanResponse
params := extractQueryParams(request)
res, err := MakeRequest[UnbanRequest, UnbanResponse](c.client, ctx, "POST", "/api/v2/moderation/unban", params, request, &result, nil)
return res, err
}
// Unmute a user
func (c *ModerationClient) Unmute(ctx context.Context, request *UnmuteRequest) (*StreamResponse[UnmuteResponse], error) {
var result UnmuteResponse
res, err := MakeRequest[UnmuteRequest, UnmuteResponse](c.client, ctx, "POST", "/api/v2/moderation/unmute", nil, request, &result, nil)
return res, err
}