diff --git a/.release-please-manifest.json b/.release-please-manifest.json index a8f7122..06d6df2 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.0.1" + ".": "1.0.2" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 313b721..2094d97 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 1.0.2 (2025-12-09) + +Full Changelog: [v1.0.1...v1.0.2](https://github.com/moderation-api/sdk-python/compare/v1.0.1...v1.0.2) + +### Chores + +* add missing docstrings ([02bdf8f](https://github.com/moderation-api/sdk-python/commit/02bdf8ffdef877fdb38df5c8215f241c0af2936e)) + ## 1.0.1 (2025-12-09) Full Changelog: [v1.0.0...v1.0.1](https://github.com/moderation-api/sdk-python/compare/v1.0.0...v1.0.1) diff --git a/pyproject.toml b/pyproject.toml index 45a79f1..f5ec7ce 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "moderation_api" -version = "1.0.1" +version = "1.0.2" description = "The official Python library for the moderation-api API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/moderation_api/_version.py b/src/moderation_api/_version.py index bd26620..51efd55 100644 --- a/src/moderation_api/_version.py +++ b/src/moderation_api/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "moderation_api" -__version__ = "1.0.1" # x-release-please-version +__version__ = "1.0.2" # x-release-please-version diff --git a/src/moderation_api/types/actions/execute_execute_response.py b/src/moderation_api/types/actions/execute_execute_response.py index cd96ab1..22dbab9 100644 --- a/src/moderation_api/types/actions/execute_execute_response.py +++ b/src/moderation_api/types/actions/execute_execute_response.py @@ -6,5 +6,7 @@ class ExecuteExecuteResponse(BaseModel): + """Execution result""" + success: bool """Whether the action was executed successfully""" diff --git a/src/moderation_api/types/author_create_params.py b/src/moderation_api/types/author_create_params.py index 7e2bce1..5a76f7c 100644 --- a/src/moderation_api/types/author_create_params.py +++ b/src/moderation_api/types/author_create_params.py @@ -41,6 +41,11 @@ class AuthorCreateParams(TypedDict, total=False): class MetadataTyped(TypedDict, total=False): + """Additional metadata provided by your system. + + We recommend including any relevant information that may assist in the moderation process. + """ + email_verified: Optional[bool] """Whether the author's email is verified""" diff --git a/src/moderation_api/types/author_create_response.py b/src/moderation_api/types/author_create_response.py index 477e8a0..f0b1ab4 100644 --- a/src/moderation_api/types/author_create_response.py +++ b/src/moderation_api/types/author_create_response.py @@ -11,6 +11,8 @@ class Block(BaseModel): + """Block or suspension details, if applicable. Null if the author is enabled.""" + reason: Optional[str] = None """The moderators reason why the author was blocked or suspended.""" @@ -19,6 +21,11 @@ class Block(BaseModel): class Metadata(BaseModel): + """Additional metadata provided by your system. + + We recommend including any relevant information that may assist in the moderation process. + """ + email_verified: Optional[bool] = None """Whether the author's email is verified""" @@ -59,6 +66,8 @@ class Metrics(BaseModel): class RiskEvaluation(BaseModel): + """Risk assessment details, if available.""" + risk_level: Optional[float] = None """Calculated risk level based on more than 10 behavioral signals.""" diff --git a/src/moderation_api/types/author_list_response.py b/src/moderation_api/types/author_list_response.py index 9ec49b9..1ad47f4 100644 --- a/src/moderation_api/types/author_list_response.py +++ b/src/moderation_api/types/author_list_response.py @@ -20,6 +20,8 @@ class AuthorBlock(BaseModel): + """Block or suspension details, if applicable. Null if the author is enabled.""" + reason: Optional[str] = None """The moderators reason why the author was blocked or suspended.""" @@ -28,6 +30,11 @@ class AuthorBlock(BaseModel): class AuthorMetadata(BaseModel): + """Additional metadata provided by your system. + + We recommend including any relevant information that may assist in the moderation process. + """ + email_verified: Optional[bool] = None """Whether the author's email is verified""" @@ -68,6 +75,8 @@ class AuthorMetrics(BaseModel): class AuthorRiskEvaluation(BaseModel): + """Risk assessment details, if available.""" + risk_level: Optional[float] = None """Calculated risk level based on more than 10 behavioral signals.""" diff --git a/src/moderation_api/types/author_retrieve_response.py b/src/moderation_api/types/author_retrieve_response.py index b0306e5..6b45b36 100644 --- a/src/moderation_api/types/author_retrieve_response.py +++ b/src/moderation_api/types/author_retrieve_response.py @@ -11,6 +11,8 @@ class Block(BaseModel): + """Block or suspension details, if applicable. Null if the author is enabled.""" + reason: Optional[str] = None """The moderators reason why the author was blocked or suspended.""" @@ -19,6 +21,11 @@ class Block(BaseModel): class Metadata(BaseModel): + """Additional metadata provided by your system. + + We recommend including any relevant information that may assist in the moderation process. + """ + email_verified: Optional[bool] = None """Whether the author's email is verified""" @@ -59,6 +66,8 @@ class Metrics(BaseModel): class RiskEvaluation(BaseModel): + """Risk assessment details, if available.""" + risk_level: Optional[float] = None """Calculated risk level based on more than 10 behavioral signals.""" diff --git a/src/moderation_api/types/author_update_params.py b/src/moderation_api/types/author_update_params.py index 9878fa0..d9c9ca1 100644 --- a/src/moderation_api/types/author_update_params.py +++ b/src/moderation_api/types/author_update_params.py @@ -38,6 +38,11 @@ class AuthorUpdateParams(TypedDict, total=False): class MetadataTyped(TypedDict, total=False): + """Additional metadata provided by your system. + + We recommend including any relevant information that may assist in the moderation process. + """ + email_verified: Optional[bool] """Whether the author's email is verified""" diff --git a/src/moderation_api/types/author_update_response.py b/src/moderation_api/types/author_update_response.py index f4a08af..4215ebb 100644 --- a/src/moderation_api/types/author_update_response.py +++ b/src/moderation_api/types/author_update_response.py @@ -11,6 +11,8 @@ class Block(BaseModel): + """Block or suspension details, if applicable. Null if the author is enabled.""" + reason: Optional[str] = None """The moderators reason why the author was blocked or suspended.""" @@ -19,6 +21,11 @@ class Block(BaseModel): class Metadata(BaseModel): + """Additional metadata provided by your system. + + We recommend including any relevant information that may assist in the moderation process. + """ + email_verified: Optional[bool] = None """Whether the author's email is verified""" @@ -59,6 +66,8 @@ class Metrics(BaseModel): class RiskEvaluation(BaseModel): + """Risk assessment details, if available.""" + risk_level: Optional[float] = None """Calculated risk level based on more than 10 behavioral signals.""" diff --git a/src/moderation_api/types/content_submit_params.py b/src/moderation_api/types/content_submit_params.py index 80828f3..4e356ec 100644 --- a/src/moderation_api/types/content_submit_params.py +++ b/src/moderation_api/types/content_submit_params.py @@ -85,6 +85,8 @@ class ContentSubmitParams(TypedDict, total=False): class ContentText(TypedDict, total=False): + """Text""" + text: Required[str] """The content text""" @@ -92,6 +94,8 @@ class ContentText(TypedDict, total=False): class ContentImage(TypedDict, total=False): + """Image""" + type: Required[Literal["image"]] url: Required[str] @@ -99,6 +103,8 @@ class ContentImage(TypedDict, total=False): class ContentVideo(TypedDict, total=False): + """Video""" + type: Required[Literal["video"]] url: Required[str] @@ -106,6 +112,8 @@ class ContentVideo(TypedDict, total=False): class ContentAudio(TypedDict, total=False): + """Audio""" + type: Required[Literal["audio"]] url: Required[str] @@ -113,6 +121,8 @@ class ContentAudio(TypedDict, total=False): class ContentObjectDataText(TypedDict, total=False): + """Text""" + text: Required[str] """The content text""" @@ -120,6 +130,8 @@ class ContentObjectDataText(TypedDict, total=False): class ContentObjectDataImage(TypedDict, total=False): + """Image""" + type: Required[Literal["image"]] url: Required[str] @@ -127,6 +139,8 @@ class ContentObjectDataImage(TypedDict, total=False): class ContentObjectDataVideo(TypedDict, total=False): + """Video""" + type: Required[Literal["video"]] url: Required[str] @@ -134,6 +148,8 @@ class ContentObjectDataVideo(TypedDict, total=False): class ContentObjectDataAudio(TypedDict, total=False): + """Audio""" + type: Required[Literal["audio"]] url: Required[str] @@ -146,6 +162,8 @@ class ContentObjectDataAudio(TypedDict, total=False): class ContentObject(TypedDict, total=False): + """Object""" + data: Required[Dict[str, ContentObjectData]] """Values in the object. Can be mixed content types.""" diff --git a/src/moderation_api/types/content_submit_response.py b/src/moderation_api/types/content_submit_response.py index a2e16fe..fede561 100644 --- a/src/moderation_api/types/content_submit_response.py +++ b/src/moderation_api/types/content_submit_response.py @@ -32,6 +32,8 @@ class AuthorBlock(BaseModel): + """Block or suspension details, if applicable. Null if the author is enabled.""" + reason: Optional[str] = None """The moderators reason why the author was blocked or suspended.""" @@ -48,6 +50,11 @@ class AuthorTrustLevel(BaseModel): class Author(BaseModel): + """The author of the content if your account has authors enabled. + + Requires you to send authorId when submitting content. + """ + id: str """Author ID in Moderation API""" @@ -64,6 +71,8 @@ class Author(BaseModel): class ContentModifiedModifiedNestedObjectContentContentModifiedModifiedNestedObjectContentItemText(BaseModel): + """Text""" + text: str """The content text""" @@ -71,6 +80,8 @@ class ContentModifiedModifiedNestedObjectContentContentModifiedModifiedNestedObj class ContentModifiedModifiedNestedObjectContentContentModifiedModifiedNestedObjectContentItemImage(BaseModel): + """Image""" + type: Literal["image"] url: str @@ -78,6 +89,8 @@ class ContentModifiedModifiedNestedObjectContentContentModifiedModifiedNestedObj class ContentModifiedModifiedNestedObjectContentContentModifiedModifiedNestedObjectContentItemVideo(BaseModel): + """Video""" + type: Literal["video"] url: str @@ -85,6 +98,8 @@ class ContentModifiedModifiedNestedObjectContentContentModifiedModifiedNestedObj class ContentModifiedModifiedNestedObjectContentContentModifiedModifiedNestedObjectContentItemAudio(BaseModel): + """Audio""" + type: Literal["audio"] url: str @@ -100,6 +115,8 @@ class ContentModifiedModifiedNestedObjectContentContentModifiedModifiedNestedObj class Content(BaseModel): + """Potentially modified content.""" + id: str """The unique identifier for the content. @@ -119,6 +136,8 @@ class Content(BaseModel): class Evaluation(BaseModel): + """The evaluation of the content after running the channel policies.""" + flag_probability: float """The probability that the content should be flagged.""" @@ -136,6 +155,8 @@ class Evaluation(BaseModel): class InsightSentimentInsight(BaseModel): + """Sentiment insight""" + id: Literal["sentiment"] probability: float @@ -146,6 +167,8 @@ class InsightSentimentInsight(BaseModel): class InsightLanguageInsight(BaseModel): + """Language insight""" + id: Literal["language"] probability: float @@ -159,6 +182,8 @@ class InsightLanguageInsight(BaseModel): class Meta(BaseModel): + """Metadata about the moderation request""" + channel_key: str """The unique key of the channel where the content was handled. @@ -183,6 +208,8 @@ class PolicyClassifierOutputLabel(BaseModel): class PolicyClassifierOutput(BaseModel): + """Classifier policy.""" + id: str """The unique identifier for the classifier output.""" @@ -207,6 +234,8 @@ class PolicyEntityMatcherOutputMatch(BaseModel): class PolicyEntityMatcherOutput(BaseModel): + """Entity matcher policy.""" + id: str flagged: bool @@ -224,6 +253,8 @@ class PolicyEntityMatcherOutput(BaseModel): class Recommendation(BaseModel): + """The recommendation for the content based on the evaluation.""" + action: Literal["review", "allow", "reject"] """The action to take based on the recommendation""" diff --git a/src/moderation_api/types/wordlist_get_embedding_status_response.py b/src/moderation_api/types/wordlist_get_embedding_status_response.py index 1fa454f..7930d48 100644 --- a/src/moderation_api/types/wordlist_get_embedding_status_response.py +++ b/src/moderation_api/types/wordlist_get_embedding_status_response.py @@ -8,6 +8,8 @@ class WordlistGetEmbeddingStatusResponse(BaseModel): + """Embedding status details""" + progress: float """Percentage of words that have been embedded (0-100)"""