moderation_api 1.23.0__tar.gz → 1.25.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. moderation_api-1.25.0/.release-please-manifest.json +3 -0
  2. {moderation_api-1.23.0 → moderation_api-1.25.0}/CHANGELOG.md +16 -0
  3. {moderation_api-1.23.0 → moderation_api-1.25.0}/PKG-INFO +8 -5
  4. {moderation_api-1.23.0 → moderation_api-1.25.0}/README.md +7 -4
  5. {moderation_api-1.23.0 → moderation_api-1.25.0}/pyproject.toml +1 -1
  6. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_version.py +1 -1
  7. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/resources/content.py +14 -2
  8. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/content_submit_params.py +33 -1
  9. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/content_submit_response.py +1 -0
  10. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/api_resources/test_content.py +12 -0
  11. moderation_api-1.23.0/.release-please-manifest.json +0 -3
  12. {moderation_api-1.23.0 → moderation_api-1.25.0}/.gitignore +0 -0
  13. {moderation_api-1.23.0 → moderation_api-1.25.0}/CONTRIBUTING.md +0 -0
  14. {moderation_api-1.23.0 → moderation_api-1.25.0}/LICENSE +0 -0
  15. {moderation_api-1.23.0 → moderation_api-1.25.0}/SECURITY.md +0 -0
  16. {moderation_api-1.23.0 → moderation_api-1.25.0}/api.md +0 -0
  17. {moderation_api-1.23.0 → moderation_api-1.25.0}/bin/check-release-environment +0 -0
  18. {moderation_api-1.23.0 → moderation_api-1.25.0}/bin/publish-pypi +0 -0
  19. {moderation_api-1.23.0 → moderation_api-1.25.0}/examples/.keep +0 -0
  20. {moderation_api-1.23.0 → moderation_api-1.25.0}/release-please-config.json +0 -0
  21. {moderation_api-1.23.0 → moderation_api-1.25.0}/requirements-dev.lock +0 -0
  22. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/__init__.py +0 -0
  23. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_base_client.py +0 -0
  24. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_client.py +0 -0
  25. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_compat.py +0 -0
  26. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_constants.py +0 -0
  27. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_exceptions.py +0 -0
  28. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_files.py +0 -0
  29. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_models.py +0 -0
  30. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_qs.py +0 -0
  31. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_resource.py +0 -0
  32. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_response.py +0 -0
  33. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_streaming.py +0 -0
  34. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_types.py +0 -0
  35. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_utils/__init__.py +0 -0
  36. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_utils/_compat.py +0 -0
  37. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_utils/_datetime_parse.py +0 -0
  38. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_utils/_json.py +0 -0
  39. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_utils/_logs.py +0 -0
  40. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_utils/_path.py +0 -0
  41. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_utils/_proxy.py +0 -0
  42. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_utils/_reflection.py +0 -0
  43. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_utils/_resources_proxy.py +0 -0
  44. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_utils/_streams.py +0 -0
  45. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_utils/_sync.py +0 -0
  46. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_utils/_transform.py +0 -0
  47. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_utils/_typing.py +0 -0
  48. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/_utils/_utils.py +0 -0
  49. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/lib/.keep +0 -0
  50. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/py.typed +0 -0
  51. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/resources/__init__.py +0 -0
  52. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/resources/account.py +0 -0
  53. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/resources/actions/__init__.py +0 -0
  54. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/resources/actions/actions.py +0 -0
  55. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/resources/actions/execute.py +0 -0
  56. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/resources/auth.py +0 -0
  57. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/resources/authors.py +0 -0
  58. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/resources/queue/__init__.py +0 -0
  59. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/resources/queue/items.py +0 -0
  60. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/resources/queue/queue.py +0 -0
  61. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/resources/wordlist/__init__.py +0 -0
  62. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/resources/wordlist/wordlist.py +0 -0
  63. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/resources/wordlist/words.py +0 -0
  64. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/__init__.py +0 -0
  65. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/account_list_response.py +0 -0
  66. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/action_create_params.py +0 -0
  67. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/action_create_response.py +0 -0
  68. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/action_delete_response.py +0 -0
  69. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/action_list_params.py +0 -0
  70. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/action_list_response.py +0 -0
  71. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/action_retrieve_response.py +0 -0
  72. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/action_update_params.py +0 -0
  73. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/action_update_response.py +0 -0
  74. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/actions/__init__.py +0 -0
  75. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/actions/execute_execute_by_id_params.py +0 -0
  76. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/actions/execute_execute_by_id_response.py +0 -0
  77. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/actions/execute_execute_params.py +0 -0
  78. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/actions/execute_execute_response.py +0 -0
  79. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/auth_create_response.py +0 -0
  80. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/auth_retrieve_response.py +0 -0
  81. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/author_create_params.py +0 -0
  82. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/author_create_response.py +0 -0
  83. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/author_delete_response.py +0 -0
  84. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/author_list_params.py +0 -0
  85. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/author_list_response.py +0 -0
  86. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/author_retrieve_response.py +0 -0
  87. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/author_update_params.py +0 -0
  88. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/author_update_response.py +0 -0
  89. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/queue/__init__.py +0 -0
  90. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/queue/item_list_params.py +0 -0
  91. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/queue/item_list_response.py +0 -0
  92. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/queue/item_resolve_params.py +0 -0
  93. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/queue/item_resolve_response.py +0 -0
  94. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/queue/item_unresolve_params.py +0 -0
  95. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/queue/item_unresolve_response.py +0 -0
  96. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/queue_get_stats_params.py +0 -0
  97. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/queue_get_stats_response.py +0 -0
  98. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/queue_retrieve_response.py +0 -0
  99. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/wordlist/__init__.py +0 -0
  100. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/wordlist/word_add_params.py +0 -0
  101. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/wordlist/word_add_response.py +0 -0
  102. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/wordlist/word_remove_params.py +0 -0
  103. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/wordlist/word_remove_response.py +0 -0
  104. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/wordlist_get_embedding_status_response.py +0 -0
  105. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/wordlist_list_response.py +0 -0
  106. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/wordlist_retrieve_response.py +0 -0
  107. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/wordlist_update_params.py +0 -0
  108. {moderation_api-1.23.0 → moderation_api-1.25.0}/src/moderation_api/types/wordlist_update_response.py +0 -0
  109. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/__init__.py +0 -0
  110. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/api_resources/__init__.py +0 -0
  111. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/api_resources/actions/__init__.py +0 -0
  112. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/api_resources/actions/test_execute.py +0 -0
  113. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/api_resources/queue/__init__.py +0 -0
  114. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/api_resources/queue/test_items.py +0 -0
  115. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/api_resources/test_account.py +0 -0
  116. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/api_resources/test_actions.py +0 -0
  117. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/api_resources/test_auth.py +0 -0
  118. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/api_resources/test_authors.py +0 -0
  119. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/api_resources/test_queue.py +0 -0
  120. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/api_resources/test_wordlist.py +0 -0
  121. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/api_resources/wordlist/__init__.py +0 -0
  122. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/api_resources/wordlist/test_words.py +0 -0
  123. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/conftest.py +0 -0
  124. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/sample_file.txt +0 -0
  125. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/test_client.py +0 -0
  126. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/test_extract_files.py +0 -0
  127. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/test_files.py +0 -0
  128. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/test_models.py +0 -0
  129. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/test_qs.py +0 -0
  130. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/test_required_args.py +0 -0
  131. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/test_response.py +0 -0
  132. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/test_streaming.py +0 -0
  133. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/test_transform.py +0 -0
  134. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/test_utils/test_datetime_parse.py +0 -0
  135. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/test_utils/test_json.py +0 -0
  136. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/test_utils/test_path.py +0 -0
  137. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/test_utils/test_proxy.py +0 -0
  138. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/test_utils/test_typing.py +0 -0
  139. {moderation_api-1.23.0 → moderation_api-1.25.0}/tests/utils.py +0 -0
  140. {moderation_api-1.23.0 → moderation_api-1.25.0}/uv.lock +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "1.25.0"
3
+ }
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.25.0 (2026-06-18)
4
+
5
+ Full Changelog: [v1.24.0...v1.25.0](https://github.com/moderation-api/sdk-python/compare/v1.24.0...v1.25.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([99f9085](https://github.com/moderation-api/sdk-python/commit/99f9085f211b55811acc687d41c5df778f822d4c))
10
+
11
+ ## 1.24.0 (2026-06-02)
12
+
13
+ Full Changelog: [v1.23.0...v1.24.0](https://github.com/moderation-api/sdk-python/compare/v1.23.0...v1.24.0)
14
+
15
+ ### Features
16
+
17
+ * **api:** api update ([45d1814](https://github.com/moderation-api/sdk-python/commit/45d18143451c84ec01a86e55178901674b5bb5e3))
18
+
3
19
  ## 1.23.0 (2026-06-01)
4
20
 
5
21
  Full Changelog: [v1.22.0...v1.23.0](https://github.com/moderation-api/sdk-python/compare/v1.22.0...v1.23.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: moderation_api
3
- Version: 1.23.0
3
+ Version: 1.25.0
4
4
  Summary: The official Python library for the moderation-api API
5
5
  Project-URL: Homepage, https://github.com/moderation-api/sdk-python
6
6
  Project-URL: Repository, https://github.com/moderation-api/sdk-python
@@ -165,11 +165,14 @@ from moderation_api import ModerationAPI
165
165
 
166
166
  client = ModerationAPI()
167
167
 
168
- author = client.authors.create(
169
- external_id="external_id",
170
- metadata={},
168
+ response = client.content.submit(
169
+ content={
170
+ "text": "text",
171
+ "type": "text",
172
+ },
173
+ client_action={"action": "review"},
171
174
  )
172
- print(author.metadata)
175
+ print(response.client_action)
173
176
  ```
174
177
 
175
178
  ## Handling errors
@@ -130,11 +130,14 @@ from moderation_api import ModerationAPI
130
130
 
131
131
  client = ModerationAPI()
132
132
 
133
- author = client.authors.create(
134
- external_id="external_id",
135
- metadata={},
133
+ response = client.content.submit(
134
+ content={
135
+ "text": "text",
136
+ "type": "text",
137
+ },
138
+ client_action={"action": "review"},
136
139
  )
137
- print(author.metadata)
140
+ print(response.client_action)
138
141
  ```
139
142
 
140
143
  ## Handling errors
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "moderation_api"
3
- version = "1.23.0"
3
+ version = "1.25.0"
4
4
  description = "The official Python library for the moderation-api API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "moderation_api"
4
- __version__ = "1.23.0" # x-release-please-version
4
+ __version__ = "1.25.0" # x-release-please-version
@@ -50,11 +50,12 @@ class ContentResource(SyncAPIResource):
50
50
  content: content_submit_params.Content,
51
51
  author_id: str | Omit = omit,
52
52
  channel: str | Omit = omit,
53
+ client_action: content_submit_params.ClientAction | Omit = omit,
53
54
  content_id: str | Omit = omit,
54
55
  conversation_id: str | Omit = omit,
55
56
  do_not_store: bool | Omit = omit,
56
57
  metadata: Dict[str, object] | Omit = omit,
57
- meta_type: Literal["profile", "message", "post", "comment", "event", "product", "review", "other"]
58
+ meta_type: Literal["profile", "message", "post", "comment", "event", "product", "review", "voice", "other"]
58
59
  | Omit = omit,
59
60
  policies: Iterable[content_submit_params.Policy] | Omit = omit,
60
61
  timestamp: float | Omit = omit,
@@ -74,6 +75,10 @@ class ContentResource(SyncAPIResource):
74
75
  channel: Provide a channel ID or key. Will use the project's default channel if not
75
76
  provided.
76
77
 
78
+ client_action: A recommendation from your own client-side flagging (e.g. a banned-IP list or a
79
+ third-party tool). Feeds the rules engine and can escalate or override the
80
+ recommended action. Does not change whether our analysis flagged the content.
81
+
77
82
  content_id: The unique ID of the content in your database.
78
83
 
79
84
  conversation_id: For example the ID of a chat room or a post
@@ -104,6 +109,7 @@ class ContentResource(SyncAPIResource):
104
109
  "content": content,
105
110
  "author_id": author_id,
106
111
  "channel": channel,
112
+ "client_action": client_action,
107
113
  "content_id": content_id,
108
114
  "conversation_id": conversation_id,
109
115
  "do_not_store": do_not_store,
@@ -147,11 +153,12 @@ class AsyncContentResource(AsyncAPIResource):
147
153
  content: content_submit_params.Content,
148
154
  author_id: str | Omit = omit,
149
155
  channel: str | Omit = omit,
156
+ client_action: content_submit_params.ClientAction | Omit = omit,
150
157
  content_id: str | Omit = omit,
151
158
  conversation_id: str | Omit = omit,
152
159
  do_not_store: bool | Omit = omit,
153
160
  metadata: Dict[str, object] | Omit = omit,
154
- meta_type: Literal["profile", "message", "post", "comment", "event", "product", "review", "other"]
161
+ meta_type: Literal["profile", "message", "post", "comment", "event", "product", "review", "voice", "other"]
155
162
  | Omit = omit,
156
163
  policies: Iterable[content_submit_params.Policy] | Omit = omit,
157
164
  timestamp: float | Omit = omit,
@@ -171,6 +178,10 @@ class AsyncContentResource(AsyncAPIResource):
171
178
  channel: Provide a channel ID or key. Will use the project's default channel if not
172
179
  provided.
173
180
 
181
+ client_action: A recommendation from your own client-side flagging (e.g. a banned-IP list or a
182
+ third-party tool). Feeds the rules engine and can escalate or override the
183
+ recommended action. Does not change whether our analysis flagged the content.
184
+
174
185
  content_id: The unique ID of the content in your database.
175
186
 
176
187
  conversation_id: For example the ID of a chat room or a post
@@ -201,6 +212,7 @@ class AsyncContentResource(AsyncAPIResource):
201
212
  "content": content,
202
213
  "author_id": author_id,
203
214
  "channel": channel,
215
+ "client_action": client_action,
204
216
  "content_id": content_id,
205
217
  "conversation_id": conversation_id,
206
218
  "do_not_store": do_not_store,
@@ -21,6 +21,7 @@ __all__ = [
21
21
  "ContentObjectDataImage",
22
22
  "ContentObjectDataVideo",
23
23
  "ContentObjectDataAudio",
24
+ "ClientAction",
24
25
  "Policy",
25
26
  "PolicyToxicity",
26
27
  "PolicyPersonalInformation",
@@ -69,6 +70,14 @@ class ContentSubmitParams(TypedDict, total=False):
69
70
  Will use the project's default channel if not provided.
70
71
  """
71
72
 
73
+ client_action: Annotated[ClientAction, PropertyInfo(alias="clientAction")]
74
+ """A recommendation from your own client-side flagging (e.g.
75
+
76
+ a banned-IP list or a third-party tool). Feeds the rules engine and can escalate
77
+ or override the recommended action. Does not change whether our analysis flagged
78
+ the content.
79
+ """
80
+
72
81
  content_id: Annotated[str, PropertyInfo(alias="contentId")]
73
82
  """The unique ID of the content in your database."""
74
83
 
@@ -82,7 +91,7 @@ class ContentSubmitParams(TypedDict, total=False):
82
91
  """Any metadata you want to store with the content"""
83
92
 
84
93
  meta_type: Annotated[
85
- Literal["profile", "message", "post", "comment", "event", "product", "review", "other"],
94
+ Literal["profile", "message", "post", "comment", "event", "product", "review", "voice", "other"],
86
95
  PropertyInfo(alias="metaType"),
87
96
  ]
88
97
  """The meta type of content being moderated"""
@@ -200,6 +209,29 @@ class ContentObject(TypedDict, total=False):
200
209
  Content: TypeAlias = Union[ContentText, ContentImage, ContentVideo, ContentAudio, ContentObject]
201
210
 
202
211
 
212
+ class ClientAction(TypedDict, total=False):
213
+ """A recommendation from your own client-side flagging (e.g.
214
+
215
+ a banned-IP list or a third-party tool). Feeds the rules engine and can escalate or override the recommended action. Does not change whether our analysis flagged the content.
216
+ """
217
+
218
+ action: Required[Literal["review", "allow", "reject"]]
219
+ """Your recommendation for the content: allow, review, or reject."""
220
+
221
+ behavior: Literal["override", "escalate"]
222
+ """How your recommendation combines with ours.
223
+
224
+ Defaults to 'escalate', which only applies it when stricter than ours;
225
+ 'override' replaces ours outright.
226
+ """
227
+
228
+ reason: str
229
+ """A human-readable explanation for your recommendation."""
230
+
231
+ source: str
232
+ """Where your recommendation came from, e.g. "banned-ip"."""
233
+
234
+
203
235
  class PolicyToxicity(TypedDict, total=False):
204
236
  id: Required[Literal["toxicity"]]
205
237
 
@@ -351,6 +351,7 @@ class Recommendation(BaseModel):
351
351
  "rule_match",
352
352
  "rule_default",
353
353
  "rule_fallback",
354
+ "client_override",
354
355
  ]
355
356
  ]
356
357
  """The reason code for the recommendation.
@@ -38,6 +38,12 @@ class TestContent:
38
38
  },
39
39
  author_id="authorId",
40
40
  channel="channel",
41
+ client_action={
42
+ "action": "review",
43
+ "behavior": "override",
44
+ "reason": "reason",
45
+ "source": "source",
46
+ },
41
47
  content_id="contentId",
42
48
  conversation_id="conversationId",
43
49
  do_not_store=True,
@@ -113,6 +119,12 @@ class TestAsyncContent:
113
119
  },
114
120
  author_id="authorId",
115
121
  channel="channel",
122
+ client_action={
123
+ "action": "review",
124
+ "behavior": "override",
125
+ "reason": "reason",
126
+ "source": "source",
127
+ },
116
128
  content_id="contentId",
117
129
  conversation_id="conversationId",
118
130
  do_not_store=True,
@@ -1,3 +0,0 @@
1
- {
2
- ".": "1.23.0"
3
- }
File without changes
File without changes
File without changes