moderation_api 1.34.0__tar.gz → 1.36.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.
- moderation_api-1.36.0/.release-please-manifest.json +3 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/CHANGELOG.md +16 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/PKG-INFO +1 -1
- {moderation_api-1.34.0 → moderation_api-1.36.0}/api.md +35 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/pyproject.toml +1 -1
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_client.py +83 -3
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_version.py +1 -1
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/resources/__init__.py +28 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/resources/content.py +119 -1
- moderation_api-1.36.0/src/moderation_api/resources/webhook_secret.py +143 -0
- moderation_api-1.36.0/src/moderation_api/resources/webhooks.py +618 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/__init__.py +8 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/content_submit_response.py +63 -0
- moderation_api-1.36.0/src/moderation_api/types/webhook_create_params.py +46 -0
- moderation_api-1.36.0/src/moderation_api/types/webhook_create_response.py +55 -0
- moderation_api-1.36.0/src/moderation_api/types/webhook_delete_response.py +13 -0
- moderation_api-1.36.0/src/moderation_api/types/webhook_list_response.py +58 -0
- moderation_api-1.36.0/src/moderation_api/types/webhook_retrieve_response.py +55 -0
- moderation_api-1.36.0/src/moderation_api/types/webhook_secret_retrieve_response.py +14 -0
- moderation_api-1.36.0/src/moderation_api/types/webhook_update_params.py +44 -0
- moderation_api-1.36.0/src/moderation_api/types/webhook_update_response.py +55 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/api_resources/test_content.py +68 -0
- moderation_api-1.36.0/tests/api_resources/test_webhook_secret.py +80 -0
- moderation_api-1.36.0/tests/api_resources/test_webhooks.py +464 -0
- moderation_api-1.34.0/.release-please-manifest.json +0 -3
- {moderation_api-1.34.0 → moderation_api-1.36.0}/.gitignore +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/CONTRIBUTING.md +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/LICENSE +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/README.md +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/SECURITY.md +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/bin/check-release-environment +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/bin/publish-pypi +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/examples/.keep +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/release-please-config.json +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/requirements-dev.lock +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/__init__.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_base_client.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_compat.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_constants.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_exceptions.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_files.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_models.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_qs.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_resource.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_streaming.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_types.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_utils/__init__.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_utils/_compat.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_utils/_datetime_parse.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_utils/_json.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_utils/_logs.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_utils/_path.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_utils/_proxy.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_utils/_reflection.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_utils/_resources_proxy.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_utils/_streams.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_utils/_sync.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_utils/_transform.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_utils/_typing.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/_utils/_utils.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/lib/.keep +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/py.typed +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/resources/account.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/resources/actions/__init__.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/resources/actions/actions.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/resources/actions/execute.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/resources/auth.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/resources/authors.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/resources/queue/__init__.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/resources/queue/items.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/resources/queue/queue.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/resources/wordlist/__init__.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/resources/wordlist/wordlist.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/resources/wordlist/words.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/account_list_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/action_create_params.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/action_create_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/action_delete_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/action_list_params.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/action_list_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/action_retrieve_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/action_update_params.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/action_update_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/actions/__init__.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/actions/execute_execute_by_id_params.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/actions/execute_execute_by_id_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/actions/execute_execute_params.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/actions/execute_execute_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/auth_create_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/auth_retrieve_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/author_create_params.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/author_create_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/author_delete_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/author_list_params.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/author_list_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/author_retrieve_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/author_update_params.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/author_update_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/content_submit_params.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/queue/__init__.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/queue/item_list_params.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/queue/item_list_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/queue/item_resolve_params.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/queue/item_resolve_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/queue/item_unresolve_params.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/queue/item_unresolve_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/queue_get_stats_params.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/queue_get_stats_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/queue_retrieve_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/wordlist/__init__.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/wordlist/word_add_params.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/wordlist/word_add_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/wordlist/word_remove_params.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/wordlist/word_remove_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/wordlist_get_embedding_status_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/wordlist_list_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/wordlist_retrieve_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/wordlist_update_params.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/src/moderation_api/types/wordlist_update_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/__init__.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/api_resources/__init__.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/api_resources/actions/__init__.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/api_resources/actions/test_execute.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/api_resources/queue/__init__.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/api_resources/queue/test_items.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/api_resources/test_account.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/api_resources/test_actions.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/api_resources/test_auth.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/api_resources/test_authors.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/api_resources/test_queue.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/api_resources/test_wordlist.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/api_resources/wordlist/__init__.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/api_resources/wordlist/test_words.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/conftest.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/sample_file.txt +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/test_client.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/test_extract_files.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/test_files.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/test_models.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/test_qs.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/test_required_args.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/test_response.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/test_streaming.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/test_transform.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/test_utils/test_json.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/test_utils/test_path.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/test_utils/test_proxy.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/test_utils/test_typing.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/tests/utils.py +0 -0
- {moderation_api-1.34.0 → moderation_api-1.36.0}/uv.lock +0 -0
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.36.0 (2026-08-21)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v1.35.0...v1.36.0](https://github.com/moderation-api/sdk-python/compare/v1.35.0...v1.36.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **api:** api update ([f3e8b80](https://github.com/moderation-api/sdk-python/commit/f3e8b80f6b3cdf30307a9cd77c4fa84c647864a5))
|
|
10
|
+
|
|
11
|
+
## 1.35.0 (2026-08-20)
|
|
12
|
+
|
|
13
|
+
Full Changelog: [v1.34.0...v1.35.0](https://github.com/moderation-api/sdk-python/compare/v1.34.0...v1.35.0)
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* **api:** webhooks and stream ([4f4bf9f](https://github.com/moderation-api/sdk-python/commit/4f4bf9f2d1e2b6c5ddea270e16fd4d8f10600618))
|
|
18
|
+
|
|
3
19
|
## 1.34.0 (2026-08-14)
|
|
4
20
|
|
|
5
21
|
Full Changelog: [v1.33.0...v1.34.0](https://github.com/moderation-api/sdk-python/compare/v1.33.0...v1.34.0)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: moderation_api
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.36.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
|
|
@@ -92,6 +92,7 @@ from moderation_api.types import ContentSubmitResponse
|
|
|
92
92
|
|
|
93
93
|
Methods:
|
|
94
94
|
|
|
95
|
+
- <code title="get /stream">client.content.<a href="./src/moderation_api/resources/content.py">stream</a>() -> None</code>
|
|
95
96
|
- <code title="post /moderate">client.content.<a href="./src/moderation_api/resources/content.py">submit</a>(\*\*<a href="src/moderation_api/types/content_submit_params.py">params</a>) -> <a href="./src/moderation_api/types/content_submit_response.py">ContentSubmitResponse</a></code>
|
|
96
97
|
|
|
97
98
|
# Account
|
|
@@ -151,3 +152,37 @@ Methods:
|
|
|
151
152
|
|
|
152
153
|
- <code title="post /wordlist/{id}/words">client.wordlist.words.<a href="./src/moderation_api/resources/wordlist/words.py">add</a>(id, \*\*<a href="src/moderation_api/types/wordlist/word_add_params.py">params</a>) -> <a href="./src/moderation_api/types/wordlist/word_add_response.py">WordAddResponse</a></code>
|
|
153
154
|
- <code title="delete /wordlist/{id}/words">client.wordlist.words.<a href="./src/moderation_api/resources/wordlist/words.py">remove</a>(id, \*\*<a href="src/moderation_api/types/wordlist/word_remove_params.py">params</a>) -> <a href="./src/moderation_api/types/wordlist/word_remove_response.py">WordRemoveResponse</a></code>
|
|
155
|
+
|
|
156
|
+
# Webhooks
|
|
157
|
+
|
|
158
|
+
Types:
|
|
159
|
+
|
|
160
|
+
```python
|
|
161
|
+
from moderation_api.types import (
|
|
162
|
+
WebhookCreateResponse,
|
|
163
|
+
WebhookRetrieveResponse,
|
|
164
|
+
WebhookUpdateResponse,
|
|
165
|
+
WebhookListResponse,
|
|
166
|
+
WebhookDeleteResponse,
|
|
167
|
+
)
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Methods:
|
|
171
|
+
|
|
172
|
+
- <code title="post /webhooks">client.webhooks.<a href="./src/moderation_api/resources/webhooks.py">create</a>(\*\*<a href="src/moderation_api/types/webhook_create_params.py">params</a>) -> <a href="./src/moderation_api/types/webhook_create_response.py">WebhookCreateResponse</a></code>
|
|
173
|
+
- <code title="get /webhooks/{id}">client.webhooks.<a href="./src/moderation_api/resources/webhooks.py">retrieve</a>(id) -> <a href="./src/moderation_api/types/webhook_retrieve_response.py">WebhookRetrieveResponse</a></code>
|
|
174
|
+
- <code title="put /webhooks/{id}">client.webhooks.<a href="./src/moderation_api/resources/webhooks.py">update</a>(id, \*\*<a href="src/moderation_api/types/webhook_update_params.py">params</a>) -> <a href="./src/moderation_api/types/webhook_update_response.py">WebhookUpdateResponse</a></code>
|
|
175
|
+
- <code title="get /webhooks">client.webhooks.<a href="./src/moderation_api/resources/webhooks.py">list</a>() -> <a href="./src/moderation_api/types/webhook_list_response.py">WebhookListResponse</a></code>
|
|
176
|
+
- <code title="delete /webhooks/{id}">client.webhooks.<a href="./src/moderation_api/resources/webhooks.py">delete</a>(id) -> <a href="./src/moderation_api/types/webhook_delete_response.py">WebhookDeleteResponse</a></code>
|
|
177
|
+
|
|
178
|
+
# WebhookSecret
|
|
179
|
+
|
|
180
|
+
Types:
|
|
181
|
+
|
|
182
|
+
```python
|
|
183
|
+
from moderation_api.types import WebhookSecretRetrieveResponse
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Methods:
|
|
187
|
+
|
|
188
|
+
- <code title="get /webhook-secret">client.webhook_secret.<a href="./src/moderation_api/resources/webhook_secret.py">retrieve</a>() -> <a href="./src/moderation_api/types/webhook_secret_retrieve_response.py">WebhookSecretRetrieveResponse</a></code>
|
|
@@ -35,12 +35,14 @@ from ._base_client import (
|
|
|
35
35
|
)
|
|
36
36
|
|
|
37
37
|
if TYPE_CHECKING:
|
|
38
|
-
from .resources import auth, queue, account, actions, authors, content, wordlist
|
|
38
|
+
from .resources import auth, queue, account, actions, authors, content, webhooks, wordlist, webhook_secret
|
|
39
39
|
from .resources.auth import AuthResource, AsyncAuthResource
|
|
40
40
|
from .resources.account import AccountResource, AsyncAccountResource
|
|
41
41
|
from .resources.authors import AuthorsResource, AsyncAuthorsResource
|
|
42
42
|
from .resources.content import ContentResource, AsyncContentResource
|
|
43
|
+
from .resources.webhooks import WebhooksResource, AsyncWebhooksResource
|
|
43
44
|
from .resources.queue.queue import QueueResource, AsyncQueueResource
|
|
45
|
+
from .resources.webhook_secret import WebhookSecretResource, AsyncWebhookSecretResource
|
|
44
46
|
from .resources.actions.actions import ActionsResource, AsyncActionsResource
|
|
45
47
|
from .resources.wordlist.wordlist import WordlistResource, AsyncWordlistResource
|
|
46
48
|
|
|
@@ -97,6 +99,7 @@ class ModerationAPI(SyncAPIClient):
|
|
|
97
99
|
|
|
98
100
|
if base_url is None:
|
|
99
101
|
base_url = os.environ.get("MODERATION_API_BASE_URL")
|
|
102
|
+
self._base_url_overridden = base_url is not None
|
|
100
103
|
if base_url is None:
|
|
101
104
|
base_url = f"https://api.moderationapi.com/v1"
|
|
102
105
|
|
|
@@ -162,6 +165,18 @@ class ModerationAPI(SyncAPIClient):
|
|
|
162
165
|
|
|
163
166
|
return WordlistResource(self)
|
|
164
167
|
|
|
168
|
+
@cached_property
|
|
169
|
+
def webhooks(self) -> WebhooksResource:
|
|
170
|
+
from .resources.webhooks import WebhooksResource
|
|
171
|
+
|
|
172
|
+
return WebhooksResource(self)
|
|
173
|
+
|
|
174
|
+
@cached_property
|
|
175
|
+
def webhook_secret(self) -> WebhookSecretResource:
|
|
176
|
+
from .resources.webhook_secret import WebhookSecretResource
|
|
177
|
+
|
|
178
|
+
return WebhookSecretResource(self)
|
|
179
|
+
|
|
165
180
|
@cached_property
|
|
166
181
|
def with_raw_response(self) -> ModerationAPIWithRawResponse:
|
|
167
182
|
return ModerationAPIWithRawResponse(self)
|
|
@@ -226,7 +241,7 @@ class ModerationAPI(SyncAPIClient):
|
|
|
226
241
|
params = set_default_query
|
|
227
242
|
|
|
228
243
|
http_client = http_client or self._client
|
|
229
|
-
|
|
244
|
+
client = self.__class__(
|
|
230
245
|
secret_key=secret_key or self.secret_key,
|
|
231
246
|
base_url=base_url or self.base_url,
|
|
232
247
|
timeout=self.timeout if isinstance(timeout, NotGiven) else timeout,
|
|
@@ -236,6 +251,8 @@ class ModerationAPI(SyncAPIClient):
|
|
|
236
251
|
default_query=params,
|
|
237
252
|
**_extra_kwargs,
|
|
238
253
|
)
|
|
254
|
+
client._base_url_overridden = self._base_url_overridden or base_url is not None
|
|
255
|
+
return client
|
|
239
256
|
|
|
240
257
|
# Alias for `copy` for nicer inline usage, e.g.
|
|
241
258
|
# client.with_options(timeout=10).foo.create(...)
|
|
@@ -316,6 +333,7 @@ class AsyncModerationAPI(AsyncAPIClient):
|
|
|
316
333
|
|
|
317
334
|
if base_url is None:
|
|
318
335
|
base_url = os.environ.get("MODERATION_API_BASE_URL")
|
|
336
|
+
self._base_url_overridden = base_url is not None
|
|
319
337
|
if base_url is None:
|
|
320
338
|
base_url = f"https://api.moderationapi.com/v1"
|
|
321
339
|
|
|
@@ -381,6 +399,18 @@ class AsyncModerationAPI(AsyncAPIClient):
|
|
|
381
399
|
|
|
382
400
|
return AsyncWordlistResource(self)
|
|
383
401
|
|
|
402
|
+
@cached_property
|
|
403
|
+
def webhooks(self) -> AsyncWebhooksResource:
|
|
404
|
+
from .resources.webhooks import AsyncWebhooksResource
|
|
405
|
+
|
|
406
|
+
return AsyncWebhooksResource(self)
|
|
407
|
+
|
|
408
|
+
@cached_property
|
|
409
|
+
def webhook_secret(self) -> AsyncWebhookSecretResource:
|
|
410
|
+
from .resources.webhook_secret import AsyncWebhookSecretResource
|
|
411
|
+
|
|
412
|
+
return AsyncWebhookSecretResource(self)
|
|
413
|
+
|
|
384
414
|
@cached_property
|
|
385
415
|
def with_raw_response(self) -> AsyncModerationAPIWithRawResponse:
|
|
386
416
|
return AsyncModerationAPIWithRawResponse(self)
|
|
@@ -445,7 +475,7 @@ class AsyncModerationAPI(AsyncAPIClient):
|
|
|
445
475
|
params = set_default_query
|
|
446
476
|
|
|
447
477
|
http_client = http_client or self._client
|
|
448
|
-
|
|
478
|
+
client = self.__class__(
|
|
449
479
|
secret_key=secret_key or self.secret_key,
|
|
450
480
|
base_url=base_url or self.base_url,
|
|
451
481
|
timeout=self.timeout if isinstance(timeout, NotGiven) else timeout,
|
|
@@ -455,6 +485,8 @@ class AsyncModerationAPI(AsyncAPIClient):
|
|
|
455
485
|
default_query=params,
|
|
456
486
|
**_extra_kwargs,
|
|
457
487
|
)
|
|
488
|
+
client._base_url_overridden = self._base_url_overridden or base_url is not None
|
|
489
|
+
return client
|
|
458
490
|
|
|
459
491
|
# Alias for `copy` for nicer inline usage, e.g.
|
|
460
492
|
# client.with_options(timeout=10).foo.create(...)
|
|
@@ -542,6 +574,18 @@ class ModerationAPIWithRawResponse:
|
|
|
542
574
|
|
|
543
575
|
return WordlistResourceWithRawResponse(self._client.wordlist)
|
|
544
576
|
|
|
577
|
+
@cached_property
|
|
578
|
+
def webhooks(self) -> webhooks.WebhooksResourceWithRawResponse:
|
|
579
|
+
from .resources.webhooks import WebhooksResourceWithRawResponse
|
|
580
|
+
|
|
581
|
+
return WebhooksResourceWithRawResponse(self._client.webhooks)
|
|
582
|
+
|
|
583
|
+
@cached_property
|
|
584
|
+
def webhook_secret(self) -> webhook_secret.WebhookSecretResourceWithRawResponse:
|
|
585
|
+
from .resources.webhook_secret import WebhookSecretResourceWithRawResponse
|
|
586
|
+
|
|
587
|
+
return WebhookSecretResourceWithRawResponse(self._client.webhook_secret)
|
|
588
|
+
|
|
545
589
|
|
|
546
590
|
class AsyncModerationAPIWithRawResponse:
|
|
547
591
|
_client: AsyncModerationAPI
|
|
@@ -591,6 +635,18 @@ class AsyncModerationAPIWithRawResponse:
|
|
|
591
635
|
|
|
592
636
|
return AsyncWordlistResourceWithRawResponse(self._client.wordlist)
|
|
593
637
|
|
|
638
|
+
@cached_property
|
|
639
|
+
def webhooks(self) -> webhooks.AsyncWebhooksResourceWithRawResponse:
|
|
640
|
+
from .resources.webhooks import AsyncWebhooksResourceWithRawResponse
|
|
641
|
+
|
|
642
|
+
return AsyncWebhooksResourceWithRawResponse(self._client.webhooks)
|
|
643
|
+
|
|
644
|
+
@cached_property
|
|
645
|
+
def webhook_secret(self) -> webhook_secret.AsyncWebhookSecretResourceWithRawResponse:
|
|
646
|
+
from .resources.webhook_secret import AsyncWebhookSecretResourceWithRawResponse
|
|
647
|
+
|
|
648
|
+
return AsyncWebhookSecretResourceWithRawResponse(self._client.webhook_secret)
|
|
649
|
+
|
|
594
650
|
|
|
595
651
|
class ModerationAPIWithStreamedResponse:
|
|
596
652
|
_client: ModerationAPI
|
|
@@ -640,6 +696,18 @@ class ModerationAPIWithStreamedResponse:
|
|
|
640
696
|
|
|
641
697
|
return WordlistResourceWithStreamingResponse(self._client.wordlist)
|
|
642
698
|
|
|
699
|
+
@cached_property
|
|
700
|
+
def webhooks(self) -> webhooks.WebhooksResourceWithStreamingResponse:
|
|
701
|
+
from .resources.webhooks import WebhooksResourceWithStreamingResponse
|
|
702
|
+
|
|
703
|
+
return WebhooksResourceWithStreamingResponse(self._client.webhooks)
|
|
704
|
+
|
|
705
|
+
@cached_property
|
|
706
|
+
def webhook_secret(self) -> webhook_secret.WebhookSecretResourceWithStreamingResponse:
|
|
707
|
+
from .resources.webhook_secret import WebhookSecretResourceWithStreamingResponse
|
|
708
|
+
|
|
709
|
+
return WebhookSecretResourceWithStreamingResponse(self._client.webhook_secret)
|
|
710
|
+
|
|
643
711
|
|
|
644
712
|
class AsyncModerationAPIWithStreamedResponse:
|
|
645
713
|
_client: AsyncModerationAPI
|
|
@@ -689,6 +757,18 @@ class AsyncModerationAPIWithStreamedResponse:
|
|
|
689
757
|
|
|
690
758
|
return AsyncWordlistResourceWithStreamingResponse(self._client.wordlist)
|
|
691
759
|
|
|
760
|
+
@cached_property
|
|
761
|
+
def webhooks(self) -> webhooks.AsyncWebhooksResourceWithStreamingResponse:
|
|
762
|
+
from .resources.webhooks import AsyncWebhooksResourceWithStreamingResponse
|
|
763
|
+
|
|
764
|
+
return AsyncWebhooksResourceWithStreamingResponse(self._client.webhooks)
|
|
765
|
+
|
|
766
|
+
@cached_property
|
|
767
|
+
def webhook_secret(self) -> webhook_secret.AsyncWebhookSecretResourceWithStreamingResponse:
|
|
768
|
+
from .resources.webhook_secret import AsyncWebhookSecretResourceWithStreamingResponse
|
|
769
|
+
|
|
770
|
+
return AsyncWebhookSecretResourceWithStreamingResponse(self._client.webhook_secret)
|
|
771
|
+
|
|
692
772
|
|
|
693
773
|
Client = ModerationAPI
|
|
694
774
|
|
|
@@ -48,6 +48,14 @@ from .content import (
|
|
|
48
48
|
ContentResourceWithStreamingResponse,
|
|
49
49
|
AsyncContentResourceWithStreamingResponse,
|
|
50
50
|
)
|
|
51
|
+
from .webhooks import (
|
|
52
|
+
WebhooksResource,
|
|
53
|
+
AsyncWebhooksResource,
|
|
54
|
+
WebhooksResourceWithRawResponse,
|
|
55
|
+
AsyncWebhooksResourceWithRawResponse,
|
|
56
|
+
WebhooksResourceWithStreamingResponse,
|
|
57
|
+
AsyncWebhooksResourceWithStreamingResponse,
|
|
58
|
+
)
|
|
51
59
|
from .wordlist import (
|
|
52
60
|
WordlistResource,
|
|
53
61
|
AsyncWordlistResource,
|
|
@@ -56,6 +64,14 @@ from .wordlist import (
|
|
|
56
64
|
WordlistResourceWithStreamingResponse,
|
|
57
65
|
AsyncWordlistResourceWithStreamingResponse,
|
|
58
66
|
)
|
|
67
|
+
from .webhook_secret import (
|
|
68
|
+
WebhookSecretResource,
|
|
69
|
+
AsyncWebhookSecretResource,
|
|
70
|
+
WebhookSecretResourceWithRawResponse,
|
|
71
|
+
AsyncWebhookSecretResourceWithRawResponse,
|
|
72
|
+
WebhookSecretResourceWithStreamingResponse,
|
|
73
|
+
AsyncWebhookSecretResourceWithStreamingResponse,
|
|
74
|
+
)
|
|
59
75
|
|
|
60
76
|
__all__ = [
|
|
61
77
|
"AuthorsResource",
|
|
@@ -100,4 +116,16 @@ __all__ = [
|
|
|
100
116
|
"AsyncWordlistResourceWithRawResponse",
|
|
101
117
|
"WordlistResourceWithStreamingResponse",
|
|
102
118
|
"AsyncWordlistResourceWithStreamingResponse",
|
|
119
|
+
"WebhooksResource",
|
|
120
|
+
"AsyncWebhooksResource",
|
|
121
|
+
"WebhooksResourceWithRawResponse",
|
|
122
|
+
"AsyncWebhooksResourceWithRawResponse",
|
|
123
|
+
"WebhooksResourceWithStreamingResponse",
|
|
124
|
+
"AsyncWebhooksResourceWithStreamingResponse",
|
|
125
|
+
"WebhookSecretResource",
|
|
126
|
+
"AsyncWebhookSecretResource",
|
|
127
|
+
"WebhookSecretResourceWithRawResponse",
|
|
128
|
+
"AsyncWebhookSecretResourceWithRawResponse",
|
|
129
|
+
"WebhookSecretResourceWithStreamingResponse",
|
|
130
|
+
"AsyncWebhookSecretResourceWithStreamingResponse",
|
|
103
131
|
]
|
|
@@ -8,7 +8,7 @@ from typing_extensions import Literal
|
|
|
8
8
|
import httpx
|
|
9
9
|
|
|
10
10
|
from ..types import content_submit_params
|
|
11
|
-
from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
|
|
11
|
+
from .._types import Body, Omit, Query, Headers, NoneType, NotGiven, omit, not_given
|
|
12
12
|
from .._utils import maybe_transform, async_maybe_transform
|
|
13
13
|
from .._compat import cached_property
|
|
14
14
|
from .._resource import SyncAPIResource, AsyncAPIResource
|
|
@@ -44,6 +44,59 @@ class ContentResource(SyncAPIResource):
|
|
|
44
44
|
"""
|
|
45
45
|
return ContentResourceWithStreamingResponse(self)
|
|
46
46
|
|
|
47
|
+
def stream(
|
|
48
|
+
self,
|
|
49
|
+
*,
|
|
50
|
+
sec_web_socket_protocol: Literal["moderationapi.v1"],
|
|
51
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
52
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
53
|
+
extra_headers: Headers | None = None,
|
|
54
|
+
extra_query: Query | None = None,
|
|
55
|
+
extra_body: Body | None = None,
|
|
56
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
57
|
+
) -> None:
|
|
58
|
+
"""Open a WebSocket to moderate live voice/call audio in real time.
|
|
59
|
+
|
|
60
|
+
Speech is
|
|
61
|
+
transcribed and each finalized utterance is moderated by your enabled text
|
|
62
|
+
policies; you receive a verdict per utterance as it's spoken.
|
|
63
|
+
|
|
64
|
+
**This is a WebSocket upgrade, not a regular HTTP call.** The request body below
|
|
65
|
+
documents the frames you _send_ over the socket; the `101` response documents
|
|
66
|
+
the events you _receive_.
|
|
67
|
+
|
|
68
|
+
- **Auth:** `Authorization: Bearer <api_key>` on the upgrade. A missing/invalid
|
|
69
|
+
key closes `4401`; voice not enabled on the plan/channel closes `4403`.
|
|
70
|
+
- **Subprotocol:** request `moderationapi.v1`.
|
|
71
|
+
- **Flow:** send one `start` frame, then `media` frames as audio arrives, then
|
|
72
|
+
`stop` (or disconnect). You receive `session.started`, `utterance.final` per
|
|
73
|
+
utterance, optional `utterance.partial`/`warning`, and `session.ended`.
|
|
74
|
+
- **Close codes:** `1000` normal · `1011` server error · `4400` bad request ·
|
|
75
|
+
`4401` auth failed · `4403` voice not enabled · `4429` concurrency limit.
|
|
76
|
+
|
|
77
|
+
See the
|
|
78
|
+
[Real-time voice guide](https://docs.moderationapi.com/content-moderation/real-time-voice)
|
|
79
|
+
for the full walkthrough and code examples.
|
|
80
|
+
|
|
81
|
+
Args:
|
|
82
|
+
extra_headers: Send extra headers
|
|
83
|
+
|
|
84
|
+
extra_query: Add additional query parameters to the request
|
|
85
|
+
|
|
86
|
+
extra_body: Add additional JSON properties to the request
|
|
87
|
+
|
|
88
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
89
|
+
"""
|
|
90
|
+
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
|
91
|
+
extra_headers.update({"Sec-WebSocket-Protocol": str(sec_web_socket_protocol)})
|
|
92
|
+
return self._get(
|
|
93
|
+
"/stream" if self._client._base_url_overridden else "wss://voice.moderationapi.com/v1/stream",
|
|
94
|
+
options=make_request_options(
|
|
95
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
96
|
+
),
|
|
97
|
+
cast_to=NoneType,
|
|
98
|
+
)
|
|
99
|
+
|
|
47
100
|
def submit(
|
|
48
101
|
self,
|
|
49
102
|
*,
|
|
@@ -147,6 +200,59 @@ class AsyncContentResource(AsyncAPIResource):
|
|
|
147
200
|
"""
|
|
148
201
|
return AsyncContentResourceWithStreamingResponse(self)
|
|
149
202
|
|
|
203
|
+
async def stream(
|
|
204
|
+
self,
|
|
205
|
+
*,
|
|
206
|
+
sec_web_socket_protocol: Literal["moderationapi.v1"],
|
|
207
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
208
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
209
|
+
extra_headers: Headers | None = None,
|
|
210
|
+
extra_query: Query | None = None,
|
|
211
|
+
extra_body: Body | None = None,
|
|
212
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
213
|
+
) -> None:
|
|
214
|
+
"""Open a WebSocket to moderate live voice/call audio in real time.
|
|
215
|
+
|
|
216
|
+
Speech is
|
|
217
|
+
transcribed and each finalized utterance is moderated by your enabled text
|
|
218
|
+
policies; you receive a verdict per utterance as it's spoken.
|
|
219
|
+
|
|
220
|
+
**This is a WebSocket upgrade, not a regular HTTP call.** The request body below
|
|
221
|
+
documents the frames you _send_ over the socket; the `101` response documents
|
|
222
|
+
the events you _receive_.
|
|
223
|
+
|
|
224
|
+
- **Auth:** `Authorization: Bearer <api_key>` on the upgrade. A missing/invalid
|
|
225
|
+
key closes `4401`; voice not enabled on the plan/channel closes `4403`.
|
|
226
|
+
- **Subprotocol:** request `moderationapi.v1`.
|
|
227
|
+
- **Flow:** send one `start` frame, then `media` frames as audio arrives, then
|
|
228
|
+
`stop` (or disconnect). You receive `session.started`, `utterance.final` per
|
|
229
|
+
utterance, optional `utterance.partial`/`warning`, and `session.ended`.
|
|
230
|
+
- **Close codes:** `1000` normal · `1011` server error · `4400` bad request ·
|
|
231
|
+
`4401` auth failed · `4403` voice not enabled · `4429` concurrency limit.
|
|
232
|
+
|
|
233
|
+
See the
|
|
234
|
+
[Real-time voice guide](https://docs.moderationapi.com/content-moderation/real-time-voice)
|
|
235
|
+
for the full walkthrough and code examples.
|
|
236
|
+
|
|
237
|
+
Args:
|
|
238
|
+
extra_headers: Send extra headers
|
|
239
|
+
|
|
240
|
+
extra_query: Add additional query parameters to the request
|
|
241
|
+
|
|
242
|
+
extra_body: Add additional JSON properties to the request
|
|
243
|
+
|
|
244
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
245
|
+
"""
|
|
246
|
+
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
|
247
|
+
extra_headers.update({"Sec-WebSocket-Protocol": str(sec_web_socket_protocol)})
|
|
248
|
+
return await self._get(
|
|
249
|
+
"/stream" if self._client._base_url_overridden else "wss://voice.moderationapi.com/v1/stream",
|
|
250
|
+
options=make_request_options(
|
|
251
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
252
|
+
),
|
|
253
|
+
cast_to=NoneType,
|
|
254
|
+
)
|
|
255
|
+
|
|
150
256
|
async def submit(
|
|
151
257
|
self,
|
|
152
258
|
*,
|
|
@@ -234,6 +340,9 @@ class ContentResourceWithRawResponse:
|
|
|
234
340
|
def __init__(self, content: ContentResource) -> None:
|
|
235
341
|
self._content = content
|
|
236
342
|
|
|
343
|
+
self.stream = to_raw_response_wrapper(
|
|
344
|
+
content.stream,
|
|
345
|
+
)
|
|
237
346
|
self.submit = to_raw_response_wrapper(
|
|
238
347
|
content.submit,
|
|
239
348
|
)
|
|
@@ -243,6 +352,9 @@ class AsyncContentResourceWithRawResponse:
|
|
|
243
352
|
def __init__(self, content: AsyncContentResource) -> None:
|
|
244
353
|
self._content = content
|
|
245
354
|
|
|
355
|
+
self.stream = async_to_raw_response_wrapper(
|
|
356
|
+
content.stream,
|
|
357
|
+
)
|
|
246
358
|
self.submit = async_to_raw_response_wrapper(
|
|
247
359
|
content.submit,
|
|
248
360
|
)
|
|
@@ -252,6 +364,9 @@ class ContentResourceWithStreamingResponse:
|
|
|
252
364
|
def __init__(self, content: ContentResource) -> None:
|
|
253
365
|
self._content = content
|
|
254
366
|
|
|
367
|
+
self.stream = to_streamed_response_wrapper(
|
|
368
|
+
content.stream,
|
|
369
|
+
)
|
|
255
370
|
self.submit = to_streamed_response_wrapper(
|
|
256
371
|
content.submit,
|
|
257
372
|
)
|
|
@@ -261,6 +376,9 @@ class AsyncContentResourceWithStreamingResponse:
|
|
|
261
376
|
def __init__(self, content: AsyncContentResource) -> None:
|
|
262
377
|
self._content = content
|
|
263
378
|
|
|
379
|
+
self.stream = async_to_streamed_response_wrapper(
|
|
380
|
+
content.stream,
|
|
381
|
+
)
|
|
264
382
|
self.submit = async_to_streamed_response_wrapper(
|
|
265
383
|
content.submit,
|
|
266
384
|
)
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import httpx
|
|
6
|
+
|
|
7
|
+
from .._types import Body, Query, Headers, NotGiven, not_given
|
|
8
|
+
from .._compat import cached_property
|
|
9
|
+
from .._resource import SyncAPIResource, AsyncAPIResource
|
|
10
|
+
from .._response import (
|
|
11
|
+
to_raw_response_wrapper,
|
|
12
|
+
to_streamed_response_wrapper,
|
|
13
|
+
async_to_raw_response_wrapper,
|
|
14
|
+
async_to_streamed_response_wrapper,
|
|
15
|
+
)
|
|
16
|
+
from .._base_client import make_request_options
|
|
17
|
+
from ..types.webhook_secret_retrieve_response import WebhookSecretRetrieveResponse
|
|
18
|
+
|
|
19
|
+
__all__ = ["WebhookSecretResource", "AsyncWebhookSecretResource"]
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class WebhookSecretResource(SyncAPIResource):
|
|
23
|
+
@cached_property
|
|
24
|
+
def with_raw_response(self) -> WebhookSecretResourceWithRawResponse:
|
|
25
|
+
"""
|
|
26
|
+
This property can be used as a prefix for any HTTP method call to return
|
|
27
|
+
the raw response object instead of the parsed content.
|
|
28
|
+
|
|
29
|
+
For more information, see https://www.github.com/moderation-api/sdk-python#accessing-raw-response-data-eg-headers
|
|
30
|
+
"""
|
|
31
|
+
return WebhookSecretResourceWithRawResponse(self)
|
|
32
|
+
|
|
33
|
+
@cached_property
|
|
34
|
+
def with_streaming_response(self) -> WebhookSecretResourceWithStreamingResponse:
|
|
35
|
+
"""
|
|
36
|
+
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
|
37
|
+
|
|
38
|
+
For more information, see https://www.github.com/moderation-api/sdk-python#with_streaming_response
|
|
39
|
+
"""
|
|
40
|
+
return WebhookSecretResourceWithStreamingResponse(self)
|
|
41
|
+
|
|
42
|
+
def retrieve(
|
|
43
|
+
self,
|
|
44
|
+
*,
|
|
45
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
46
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
47
|
+
extra_headers: Headers | None = None,
|
|
48
|
+
extra_query: Query | None = None,
|
|
49
|
+
extra_body: Body | None = None,
|
|
50
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
51
|
+
) -> WebhookSecretRetrieveResponse:
|
|
52
|
+
"""
|
|
53
|
+
Get the signing secret used to sign webhook deliveries for this project,
|
|
54
|
+
creating one if none exists yet. Verify deliveries by comparing the
|
|
55
|
+
`modapi-signature` header to HMAC-SHA256(raw request body, secret) hex-encoded.
|
|
56
|
+
"""
|
|
57
|
+
return self._get(
|
|
58
|
+
"/webhook-secret",
|
|
59
|
+
options=make_request_options(
|
|
60
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
61
|
+
),
|
|
62
|
+
cast_to=WebhookSecretRetrieveResponse,
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class AsyncWebhookSecretResource(AsyncAPIResource):
|
|
67
|
+
@cached_property
|
|
68
|
+
def with_raw_response(self) -> AsyncWebhookSecretResourceWithRawResponse:
|
|
69
|
+
"""
|
|
70
|
+
This property can be used as a prefix for any HTTP method call to return
|
|
71
|
+
the raw response object instead of the parsed content.
|
|
72
|
+
|
|
73
|
+
For more information, see https://www.github.com/moderation-api/sdk-python#accessing-raw-response-data-eg-headers
|
|
74
|
+
"""
|
|
75
|
+
return AsyncWebhookSecretResourceWithRawResponse(self)
|
|
76
|
+
|
|
77
|
+
@cached_property
|
|
78
|
+
def with_streaming_response(self) -> AsyncWebhookSecretResourceWithStreamingResponse:
|
|
79
|
+
"""
|
|
80
|
+
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
|
81
|
+
|
|
82
|
+
For more information, see https://www.github.com/moderation-api/sdk-python#with_streaming_response
|
|
83
|
+
"""
|
|
84
|
+
return AsyncWebhookSecretResourceWithStreamingResponse(self)
|
|
85
|
+
|
|
86
|
+
async def retrieve(
|
|
87
|
+
self,
|
|
88
|
+
*,
|
|
89
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
90
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
91
|
+
extra_headers: Headers | None = None,
|
|
92
|
+
extra_query: Query | None = None,
|
|
93
|
+
extra_body: Body | None = None,
|
|
94
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
95
|
+
) -> WebhookSecretRetrieveResponse:
|
|
96
|
+
"""
|
|
97
|
+
Get the signing secret used to sign webhook deliveries for this project,
|
|
98
|
+
creating one if none exists yet. Verify deliveries by comparing the
|
|
99
|
+
`modapi-signature` header to HMAC-SHA256(raw request body, secret) hex-encoded.
|
|
100
|
+
"""
|
|
101
|
+
return await self._get(
|
|
102
|
+
"/webhook-secret",
|
|
103
|
+
options=make_request_options(
|
|
104
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
105
|
+
),
|
|
106
|
+
cast_to=WebhookSecretRetrieveResponse,
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
class WebhookSecretResourceWithRawResponse:
|
|
111
|
+
def __init__(self, webhook_secret: WebhookSecretResource) -> None:
|
|
112
|
+
self._webhook_secret = webhook_secret
|
|
113
|
+
|
|
114
|
+
self.retrieve = to_raw_response_wrapper(
|
|
115
|
+
webhook_secret.retrieve,
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
class AsyncWebhookSecretResourceWithRawResponse:
|
|
120
|
+
def __init__(self, webhook_secret: AsyncWebhookSecretResource) -> None:
|
|
121
|
+
self._webhook_secret = webhook_secret
|
|
122
|
+
|
|
123
|
+
self.retrieve = async_to_raw_response_wrapper(
|
|
124
|
+
webhook_secret.retrieve,
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
class WebhookSecretResourceWithStreamingResponse:
|
|
129
|
+
def __init__(self, webhook_secret: WebhookSecretResource) -> None:
|
|
130
|
+
self._webhook_secret = webhook_secret
|
|
131
|
+
|
|
132
|
+
self.retrieve = to_streamed_response_wrapper(
|
|
133
|
+
webhook_secret.retrieve,
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
class AsyncWebhookSecretResourceWithStreamingResponse:
|
|
138
|
+
def __init__(self, webhook_secret: AsyncWebhookSecretResource) -> None:
|
|
139
|
+
self._webhook_secret = webhook_secret
|
|
140
|
+
|
|
141
|
+
self.retrieve = async_to_streamed_response_wrapper(
|
|
142
|
+
webhook_secret.retrieve,
|
|
143
|
+
)
|