diff --git a/docs/02_return_values.rst b/docs/02_return_values.rst index 6510c20..deda648 100644 --- a/docs/02_return_values.rst +++ b/docs/02_return_values.rst @@ -74,6 +74,12 @@ Return types .. autoclass:: mastodon.return_types.Status :members: +.. autoclass:: mastodon.return_types.Quote + :members: + +.. autoclass:: mastodon.return_types.ShallowQuote + :members: + .. autoclass:: mastodon.return_types.StatusEdit :members: @@ -197,6 +203,9 @@ Return types .. autoclass:: mastodon.return_types.InstanceUsageUsers :members: +.. autoclass:: mastodon.return_types.RuleTranslation + :members: + .. autoclass:: mastodon.return_types.Rule :members: diff --git a/mastodon/return_types.py b/mastodon/return_types.py index f55c49d..a888856 100644 --- a/mastodon/return_types.py +++ b/mastodon/return_types.py @@ -285,9 +285,9 @@ class Account(AttribAccessDict): * 4.1.0: added """ - memorial: "bool" + memorial: "Optional[bool]" """ - Boolean indicating whether the account is an in-memoriam account. + Boolean indicating whether the account is an in-memoriam account. (optional) Version history: * 4.2.0: added @@ -478,7 +478,15 @@ class CredentialAccountSource(AttribAccessDict): * 3.1.0: added """ - _version = "4.2.0" + attribution_domains: "NonPaginatableList[str]" + """ + List of domains that are allowed to be shown as having published something from this user. + + Version history: + * 4.4.0: added + """ + + _version = "4.4.0" class Status(AttribAccessDict): """ @@ -738,7 +746,79 @@ class Status(AttribAccessDict): * 4.0.0: added """ - _version = "4.0.0" + quote: "Optional[Union[Quote, ShallowQuote]]" + """ + Information about a quoted status. Can be shallow (ShallowQuote, id only) or full (Quote, full status object included). (nullable) + + Version history: + * 4.4.0: added + """ + + _version = "4.4.0" + +class Quote(AttribAccessDict): + """ + A full quote of a status, including the full status object in case of an accepted quote None if the quote is not accepted. + + Example: + + .. code-block:: python + + # Returns a Quote object + mastodon.status().quote + + See also (Mastodon API documentation): https://docs.joinmastodon.org/entities/Quote/ + """ + + state: "str" + """ + The state of the quote. + + Version history: + * 4.4.0: added + """ + + quoted_status: "Optional[Status]" + """ + The quoted status object, if the quote has been accepted. (optional) + + Version history: + * 4.4.0: added + """ + + _version = "4.4.0" + +class ShallowQuote(AttribAccessDict): + """ + A shallow quote of a status, containing only the ID of the quoted status. Used in multi-level quotes. + + Example: + + .. code-block:: python + + # Returns a ShallowQuote object + mastodon.status().quote.quoted_status.quote + + See also (Mastodon API documentation): https://docs.joinmastodon.org/entities/ShallowQuote/ + """ + + quoted_status_id: "Optional[MaybeSnowflakeIdType]" + """ + The ID of the quoted status. None if the quote is not accepted. (nullable) + + Version history: + * 4.4.0: added + """ + + state: "str" + """ + The state of the quote. + + Version history: + * 4.4.0: added + """ + + _version = "4.4.0" class StatusEdit(AttribAccessDict): """ @@ -1076,7 +1156,15 @@ class ScheduledStatusParams(AttribAccessDict): * 2.7.0: added """ - _version = "2.8.0" + quoted_status_id: "Optional[MaybeSnowflakeIdType]" + """ + ID for a status this status will quote, once posted. (nullable) + + Version history: + * 4.4.0: added + """ + + _version = "4.4.0" class Poll(AttribAccessDict): """ @@ -1333,7 +1421,15 @@ class Tag(AttribAccessDict): * 3.5.0: added """ - _version = "4.0.0" + featuring: "Optional[bool]" + """ + Whether the hashtag is featured on the logged-in users profile. (optional) + + Version history: + * 4.4.0: added + """ + + _version = "4.4.0" class TagHistory(AttribAccessDict): """ @@ -3158,7 +3254,15 @@ class InstanceConfigurationV2(AttribAccessDict): * 4.3.0: added """ - _version = "4.3.0" + limited_federation: "bool" + """ + Whether federation on this instance is limited to explicitly allowed domains ('allowlist mode'). + + Version history: + * 4.4.0: added + """ + + _version = "4.4.0" class InstanceVapidKey(AttribAccessDict): """ @@ -3216,7 +3320,34 @@ class InstanceURLsV2(AttribAccessDict): * 4.0.0: added """ - _version = "4.0.0" + about: "Optional[str]" + """ + If present, a URL where the instance's about page can be found. (optional) + Should contain (as text): URL + + Version history: + * 4.4.0: added + """ + + privacy_policy: "Optional[str]" + """ + If present, a URL where the instance's privacy policy can be found. (optional) + Should contain (as text): URL + + Version history: + * 4.4.0: added + """ + + terms_of_service: "Optional[str]" + """ + If present, a URL where the instance's terms of service can be found. (optional) + Should contain (as text): URL + + Version history: + * 4.4.0: added + """ + + _version = "4.4.0" class InstanceThumbnail(AttribAccessDict): """ @@ -3386,6 +3517,38 @@ class InstanceUsageUsers(AttribAccessDict): _version = "3.0.0" +class RuleTranslation(AttribAccessDict): + """ + A translation for a rule into a specific language. + + Example: + + .. code-block:: python + + # Returns a RuleTranslation object + mastodon.instance().rules[0].translations['de'] + + See also (Mastodon API documentation): https://docs.joinmastodon.org/entities/Rule/#translations + """ + + text: "str" + """ + The rule to be followed, in few words, in the specified language. + + Version history: + * 4.4.0: added + """ + + hint: "str" + """ + Potentially, the rule to be followed, in more words, in the specified language. + + Version history: + * 4.4.0: added + """ + + _version = "4.4.0" + class Rule(AttribAccessDict): """ A rule that instance staff has specified users must follow on this instance. @@ -3424,7 +3587,15 @@ class Rule(AttribAccessDict): * 4.3.0: added """ - _version = "4.3.0" + translations: "AttribAccessDict[str, RuleTranslation]" + """ + A list of translations for the rule, as a dictionary with the key being ISO 639-1 (two-letter) language codes for available languages. + + Version history: + * 4.4.0: added + """ + + _version = "4.4.0" class InstanceRegistrations(AttribAccessDict): """ @@ -3467,11 +3638,11 @@ class InstanceRegistrations(AttribAccessDict): url: "Optional[str]" """ - Presumably, a registration related URL. It is unclear what this is for. (nullable) + A custom URL for account registration, when using external authentication. (nullable) Should contain (as text): URL Version history: - * 4.0.0: added + * 4.2.0: added """ sign_up_url: "Optional[str]" @@ -3482,7 +3653,23 @@ class InstanceRegistrations(AttribAccessDict): * 4.2.0: added """ - _version = "4.2.0" + reason_required: "Optional[bool]" + """ + Boolean indicating whether a reason for registration is required on this instance. (nullable) + + Version history: + * 4.4.0: added + """ + + min_age: "Optional[int]" + """ + Minimum age in years required to register on this instance. (nullable) + + Version history: + * 4.4.0: added + """ + + _version = "4.4.0" class InstanceContact(AttribAccessDict): """ @@ -3675,7 +3862,15 @@ class InstanceMediaConfiguration(AttribAccessDict): * 3.4.2: added """ - _version = "3.4.2" + description_limit: "int" + """ + Maximum number of characters in a media attachment description this instance allows local users to use. + + Version history: + * 4.4.0: added + """ + + _version = "4.4.0" class InstancePollConfiguration(AttribAccessDict): """ @@ -3789,7 +3984,7 @@ class Nodeinfo(AttribAccessDict): metadata: "NodeinfoMetadata" """ - Additional node metadata. On Mastodon, typically an empty object with no fields. + Additional node metadata. Can be entirely empty. Version history: * 3.0.0: added @@ -3947,7 +4142,23 @@ class NodeinfoMetadata(AttribAccessDict): See also (Mastodon API documentation): https://github.com/jhass/nodeinfo """ - _version = "0.0.0" + nodeName: "str" + """ + Name of the instance, as specified by the instance admin. + + Version history: + * 4.4.0: added + """ + + nodeDescription: "Optional[str]" + """ + Description of the instance, as specified by the instance admin. (nullable) + + Version history: + * 4.4.0: added + """ + + _version = "4.4.0" class Activity(AttribAccessDict): """ @@ -4283,7 +4494,15 @@ class WebPushSubscription(AttribAccessDict): * 2.4.0: added """ - _version = "4.0.0" + standard: "bool" + """ + Boolean indicatign whether the push messages follow the standardized specifications (RFC8030+RFC8291+RFC8292). Else they follow a legacy version of the specifications (4th draft of RFC8291 and 1st draft of RFC8292). + + Version history: + * 4.4.0: added + """ + + _version = "4.4.0" class WebPushSubscriptionAlerts(AttribAccessDict): """ @@ -4784,18 +5003,18 @@ class Reaction(AttribAccessDict): * 3.1.0: added """ - url: "str" + url: "Optional[str]" """ - URL for the custom emoji image. + URL for the custom emoji image. (nullable) Should contain (as text): URL Version history: * 3.1.0: added """ - static_url: "str" + static_url: "Optional[str]" """ - URL for a never-animated version of the custom emoji image. + URL for a never-animated version of the custom emoji image. (nullable) Should contain (as text): URL Version history: @@ -5690,9 +5909,9 @@ class DomainBlock(AttribAccessDict): * 4.0.0: added """ - comment: "str" + comment: "Optional[str]" """ - An optional reason for the domain block. + An optional reason for the domain block. (nullable) Version history: * 4.0.0: added @@ -6081,7 +6300,15 @@ class AccountCreationErrorDetails(AttribAccessDict): * 3.4.0: added """ - _version = "3.4.0" + date_of_birth: "Optional[NonPaginatableList[AccountCreationErrorDetailsField]]" + """ + An object giving more details about an error caused by the date of birth. (optional) + + Version history: + * 4.4.0: added + """ + + _version = "4.4.0" class AccountCreationErrorDetailsField(AttribAccessDict): """ @@ -6889,6 +7116,8 @@ ENTITY_NAME_MAP = { "Role": Role, "CredentialAccountSource": CredentialAccountSource, "Status": Status, + "Quote": Quote, + "ShallowQuote": ShallowQuote, "StatusEdit": StatusEdit, "FilterResult": FilterResult, "StatusMention": StatusMention, @@ -6932,6 +7161,7 @@ ENTITY_NAME_MAP = { "InstanceStatistics": InstanceStatistics, "InstanceUsage": InstanceUsage, "InstanceUsageUsers": InstanceUsageUsers, + "RuleTranslation": RuleTranslation, "Rule": Rule, "InstanceRegistrations": InstanceRegistrations, "InstanceContact": InstanceContact, @@ -7003,6 +7233,8 @@ __all__ = [ "Role", "CredentialAccountSource", "Status", + "Quote", + "ShallowQuote", "StatusEdit", "FilterResult", "StatusMention", @@ -7046,6 +7278,7 @@ __all__ = [ "InstanceStatistics", "InstanceUsage", "InstanceUsageUsers", + "RuleTranslation", "Rule", "InstanceRegistrations", "InstanceContact", diff --git a/mastodon/types_base.py b/mastodon/types_base.py index 0fc7b5f..6f865b7 100644 --- a/mastodon/types_base.py +++ b/mastodon/types_base.py @@ -191,24 +191,25 @@ if sys.version_info < (3, 9): # I'm sorry about this, but I cannot think of another way to make this work properly in versions below 3.9 that # cannot resolve forward references in a sane way from mastodon.return_types import Account, AccountField, Role, CredentialAccountSource, \ - Status, StatusEdit, FilterResult, StatusMention, ScheduledStatus, ScheduledStatusParams, \ - Poll, PollOption, Conversation, Tag, TagHistory, CustomEmoji, \ - Application, Relationship, Filter, FilterV2, Notification, Context, \ - UserList, MediaAttachment, MediaAttachmentMetadataContainer, MediaAttachmentImageMetadata, MediaAttachmentVideoMetadata, MediaAttachmentAudioMetadata, \ - MediaAttachmentFocusPoint, MediaAttachmentColors, PreviewCard, TrendingLinkHistory, PreviewCardAuthor, Search, \ - SearchV2, Instance, InstanceConfiguration, InstanceURLs, InstanceV2, InstanceIcon, \ - InstanceConfigurationV2, InstanceVapidKey, InstanceURLsV2, InstanceThumbnail, InstanceThumbnailVersions, InstanceStatistics, \ - InstanceUsage, InstanceUsageUsers, Rule, InstanceRegistrations, InstanceContact, InstanceAccountConfiguration, \ - InstanceStatusConfiguration, InstanceTranslationConfiguration, InstanceMediaConfiguration, InstancePollConfiguration, Nodeinfo, NodeinfoSoftware, \ - NodeinfoServices, NodeinfoUsage, NodeinfoUsageUsers, NodeinfoMetadata, Activity, Report, \ - AdminReport, WebPushSubscription, WebPushSubscriptionAlerts, PushNotification, Preferences, FeaturedTag, \ - Marker, Announcement, Reaction, StreamReaction, FamiliarFollowers, AdminAccount, \ - AdminIp, AdminMeasure, AdminMeasureData, AdminDimension, AdminDimensionData, AdminRetention, \ - AdminCohort, AdminDomainBlock, AdminCanonicalEmailBlock, AdminDomainAllow, AdminEmailDomainBlock, AdminEmailDomainBlockHistory, \ - AdminIpBlock, DomainBlock, ExtendedDescription, FilterKeyword, FilterStatus, IdentityProof, \ - StatusSource, Suggestion, Translation, AccountCreationError, AccountCreationErrorDetails, AccountCreationErrorDetailsField, \ - NotificationPolicy, NotificationPolicySummary, RelationshipSeveranceEvent, GroupedNotificationsResults, PartialAccountWithAvatar, NotificationGroup, \ - AccountWarning, UnreadNotificationsCount, Appeal, NotificationRequest, SupportedLocale, OAuthServerInfo + Status, Quote, ShallowQuote, StatusEdit, FilterResult, StatusMention, \ + ScheduledStatus, ScheduledStatusParams, Poll, PollOption, Conversation, Tag, \ + TagHistory, CustomEmoji, Application, Relationship, Filter, FilterV2, \ + Notification, Context, UserList, MediaAttachment, MediaAttachmentMetadataContainer, MediaAttachmentImageMetadata, \ + MediaAttachmentVideoMetadata, MediaAttachmentAudioMetadata, MediaAttachmentFocusPoint, MediaAttachmentColors, PreviewCard, TrendingLinkHistory, \ + PreviewCardAuthor, Search, SearchV2, Instance, InstanceConfiguration, InstanceURLs, \ + InstanceV2, InstanceIcon, InstanceConfigurationV2, InstanceVapidKey, InstanceURLsV2, InstanceThumbnail, \ + InstanceThumbnailVersions, InstanceStatistics, InstanceUsage, InstanceUsageUsers, RuleTranslation, Rule, \ + InstanceRegistrations, InstanceContact, InstanceAccountConfiguration, InstanceStatusConfiguration, InstanceTranslationConfiguration, InstanceMediaConfiguration, \ + InstancePollConfiguration, Nodeinfo, NodeinfoSoftware, NodeinfoServices, NodeinfoUsage, NodeinfoUsageUsers, \ + NodeinfoMetadata, Activity, Report, AdminReport, WebPushSubscription, WebPushSubscriptionAlerts, \ + PushNotification, Preferences, FeaturedTag, Marker, Announcement, Reaction, \ + StreamReaction, FamiliarFollowers, AdminAccount, AdminIp, AdminMeasure, AdminMeasureData, \ + AdminDimension, AdminDimensionData, AdminRetention, AdminCohort, AdminDomainBlock, AdminCanonicalEmailBlock, \ + AdminDomainAllow, AdminEmailDomainBlock, AdminEmailDomainBlockHistory, AdminIpBlock, DomainBlock, ExtendedDescription, \ + FilterKeyword, FilterStatus, IdentityProof, StatusSource, Suggestion, Translation, \ + AccountCreationError, AccountCreationErrorDetails, AccountCreationErrorDetailsField, NotificationPolicy, NotificationPolicySummary, RelationshipSeveranceEvent, \ + GroupedNotificationsResults, PartialAccountWithAvatar, NotificationGroup, AccountWarning, UnreadNotificationsCount, Appeal, \ + NotificationRequest, SupportedLocale, OAuthServerInfo if isinstance(t, ForwardRef): try: t = t._evaluate(globals(), locals(), frozenset()) @@ -295,6 +296,12 @@ def try_cast(t, value, retry = True, union_specializer = None): if union_specializer is not None: value["__union_specializer"] = union_specializer value = t(**value) + + # Did we have type arguments on the dict? If so, we need to try to cast the values + if hasattr(t, '__args__') and len(t.__args__) > 1: + value_cast_type = t.__args__[1] + for key, val in value.items(): + value[key] = try_cast_recurse(value_cast_type, val, union_specializer) elif real_issubclass(t, bool): if isinstance(value, str): if value.lower() == 'true': @@ -343,6 +350,9 @@ def try_cast(t, value, retry = True, union_specializer = None): else: value = t(value) except Exception as e: + # Failures are silently ignored, usually. + # import traceback + # traceback.print_exc() if retry and isinstance(value, dict): value = try_cast(AttribAccessDict, value, False, union_specializer) return value @@ -352,6 +362,7 @@ def try_cast_recurse(t, value, union_specializer=None): Non-dict compound type casting function. Handles: * Casting to list, tuple, EntityList or (Non)PaginatableList, converting all elements to the correct type recursively * Casting to Union, use union_specializer to special case the union type to the correct one + * Casting to Union, special case out Quote vs ShallowQuote by the presence of "quoted_status" or "quoted_status_id" in the value * Casting to Union, trying all types in the union until one works Gives up and returns as-is if none of the above work. """ @@ -384,6 +395,12 @@ def try_cast_recurse(t, value, union_specializer=None): "audio": MediaAttachmentAudioMetadata, "gifv": MediaAttachmentVideoMetadata, }.get(union_specializer, None) + if isinstance(value, dict) and "quoted_status_id" in value: + from mastodon.return_types import ShallowQuote + real_type = ShallowQuote + elif isinstance(value, dict) and "quoted_status" in value: + from mastodon.return_types import Quote + real_type = Quote if real_type in t.__args__: value = try_cast_recurse(real_type, value, union_specializer) use_real_type = True @@ -405,6 +422,8 @@ def try_cast_recurse(t, value, union_specializer=None): value = try_cast(t, value, True, union_specializer) except Exception as e: # Failures are silently ignored. We care about maximum not breaking here. + # import traceback + # traceback.print_exc() pass if real_issubclass(value.__class__, AttribAccessDict) or real_issubclass(value.__class__, PaginatableList) or real_issubclass(value.__class__, NonPaginatableList) or real_issubclass(value.__class__, MaybeSnowflakeIdType): @@ -673,8 +692,16 @@ class AttribAccessDict(OrderedStrDict, Entity): # If we're already an AttribAccessDict subclass, skip all the casting if not isinstance(val, AttribAccessDict): # Collate type hints that we may have - type_hints = get_type_hints(self.__class__) - init_hints = get_type_hints(self.__class__.__init__) + type_hints = {} + try: + type_hints = get_type_hints(self.__class__) + except: + pass + init_hints = {} + try: + init_hints = get_type_hints(self.__class__.__init__) + except: + pass type_hints.update(init_hints) # Ugly hack: We have to specialize unions by hand because you can't just guess by content generally diff --git a/srcgen/return_types.json b/srcgen/return_types.json index 5052c06..a05e838 100644 --- a/srcgen/return_types.json +++ b/srcgen/return_types.json @@ -481,7 +481,7 @@ "description": "Boolean indicating whether the account is an in-memoriam account.", "field_type": "bool", "field_subtype": null, - "is_optional": false, + "is_optional": true, "is_nullable": false, "version_history": [ [ @@ -773,6 +773,23 @@ ] ], "enum": null + }, + "attribution_domains": { + "description": "List of domains that are allowed to be shown as having published something from this user.", + "field_type": "NonPaginatableList", + "field_subtype": "str", + "is_optional": false, + "is_nullable": false, + "version_history": [ + [ + "4.4.0", + "added" + ] + ], + "api_version_list": [ + 3 + ], + "enum": null } } }, @@ -1197,6 +1214,115 @@ "added" ] ] + }, + "quote": { + "description": "Information about a quoted status. Can be shallow (ShallowQuote, id only) or full (Quote, full status object included).", + "field_type": "Union[Quote, ShallowQuote]", + "field_subtype": null, + "is_optional": false, + "is_nullable": true, + "version_history": [ + [ + "4.4.0", + "added" + ] + ] + } + } + }, + { + "name": "Quote", + "python_name": "Quote", + "func_call": "mastodon.status().quote", + "func_call_real": "mastodon.status(115044073088181107).quote", + "masto_doc_link": "https://docs.joinmastodon.org/entities/Quote/", + "func_call_additional": null, + "func_alternate_acc": false, + "manual_update": false, + "description": "A full quote of a status, including the full status object in case of an accepted quote None if the quote is not accepted.", + "fields": { + "state": { + "description": "The state of the quote.", + "field_type": "str", + "field_subtype": null, + "is_optional": false, + "is_nullable": false, + "version_history": [ + [ + "4.4.0", + "added" + ] + ], + "enum": { + "pending": "The quote has not been acknowledged by the quoted account yet, and requires authorization before being displayed.", + "accepted": "The quote has been approved by the quoted account and can be displayed. This is the only case where quoted_status is non-null.", + "rejected": "The quote has been explicitly rejected by the quoted account, and should not be displayed.", + "revoked": "The quote was approved by the quoted account originally, but permission has since been revoked by the quoted account, and it should not be displayed.", + "deleted": "The quote was approved by the quoted account originally, but the quoted status has since been deleted.", + "unauthorized": "The quote has been approved by the quoted account, but the logged-on user is not authorized to see the quoted status." + } + }, + "quoted_status": { + "description": "The quoted status object, if the quote has been accepted.", + "field_type": "Status", + "field_subtype": null, + "is_optional": true, + "is_nullable": false, + "version_history": [ + [ + "4.4.0", + "added" + ] + ], + "enum": null + } + } + }, + { + "name": "Shallow quote", + "python_name": "ShallowQuote", + "func_call": "mastodon.status().quote.quoted_status.quote", + "func_call_real": "mastodon.status(115044073088181107).quote.quoted_status.quote", + "masto_doc_link": "https://docs.joinmastodon.org/entities/ShallowQuote/", + "func_call_additional": null, + "func_alternate_acc": false, + "manual_update": false, + "description": "A shallow quote of a status, containing only the ID of the quoted status. Used in multi-level quotes.", + "fields": { + "quoted_status_id": { + "description": "The ID of the quoted status. None if the quote is not accepted.", + "field_type": "MaybeSnowflakeIdType", + "field_subtype": null, + "is_optional": false, + "is_nullable": true, + "version_history": [ + [ + "4.4.0", + "added" + ] + ], + "enum": null + }, + "state": { + "description": "The state of the quote.", + "field_type": "str", + "field_subtype": null, + "is_optional": false, + "is_nullable": false, + "version_history": [ + [ + "4.4.0", + "added" + ] + ], + "enum": { + "pending": "The quote has not been acknowledged by the quoted account yet, and requires authorization before being displayed.", + "accepted": "The quote has been approved by the quoted account and can be displayed. This is the only case where quoted_status_id is non-null.", + "rejected": "The quote has been explicitly rejected by the quoted account, and should not be displayed.", + "revoked": "The quote was approved by the quoted account originally, but permission has since been revoked by the quoted account, and it should not be displayed.", + "deleted": "The quote was approved by the quoted account originally, but the quoted status has since been deleted.", + "unauthorized": "The quote has been approved by the quoted account, but the logged-in user is not authorized to see the quoted status." + } } } }, @@ -1711,6 +1837,20 @@ ] ], "enum": null + }, + "quoted_status_id": { + "description": "ID for a status this status will quote, once posted.", + "field_type": "MaybeSnowflakeIdType", + "field_subtype": null, + "is_optional": false, + "is_nullable": true, + "version_history": [ + [ + "4.4.0", + "added" + ] + ], + "enum": null } } }, @@ -2099,6 +2239,20 @@ ] ], "enum": null + }, + "featuring": { + "description": "Whether the hashtag is featured on the logged-in users profile.", + "field_type": "bool", + "field_subtype": null, + "is_optional": true, + "is_nullable": false, + "version_history": [ + [ + "4.4.0", + "added" + ] + ], + "enum": null } } }, @@ -4882,6 +5036,19 @@ "added" ] ] + }, + "limited_federation": { + "description": "Whether federation on this instance is limited to explicitly allowed domains ('allowlist mode')", + "field_type": "bool", + "field_subtype": null, + "is_optional": false, + "is_nullable": false, + "version_history": [ + [ + "4.4.0", + "added" + ] + ] } } }, @@ -4954,6 +5121,48 @@ "added" ] ] + }, + "about": { + "description": "If present, a URL where the instance's about page can be found.", + "field_type": "str", + "field_subtype": null, + "is_optional": true, + "is_nullable": false, + "field_structuretype": "URL", + "version_history": [ + [ + "4.4.0", + "added" + ] + ] + }, + "privacy_policy": { + "description": "If present, a URL where the instance's privacy policy can be found.", + "field_type": "str", + "field_subtype": null, + "is_optional": true, + "is_nullable": false, + "field_structuretype": "URL", + "version_history": [ + [ + "4.4.0", + "added" + ] + ] + }, + "terms_of_service": { + "description": "If present, a URL where the instance's terms of service can be found.", + "field_type": "str", + "field_subtype": null, + "is_optional": true, + "is_nullable": false, + "field_structuretype": "URL", + "version_history": [ + [ + "4.4.0", + "added" + ] + ] } } }, @@ -5163,6 +5372,47 @@ } } }, + { + "name": "Rule translation", + "python_name": "RuleTranslation", + "func_call": "mastodon.instance().rules[0].translations['de']", + "masto_doc_link": "https://docs.joinmastodon.org/entities/Rule/#translations", + "func_call_real": null, + "func_call_additional": null, + "func_alternate_acc": false, + "manual_update": false, + "description": "A translation for a rule into a specific language.", + "fields": { + "text": { + "description": "The rule to be followed, in few words, in the specified language.", + "field_type": "str", + "field_subtype": null, + "is_optional": false, + "is_nullable": false, + "version_history": [ + [ + "4.4.0", + "added" + ] + ], + "enum": null + }, + "hint": { + "description": "Potentially, the rule to be followed, in more words, in the specified language.", + "field_type": "str", + "field_subtype": null, + "is_optional": false, + "is_nullable": false, + "version_history": [ + [ + "4.4.0", + "added" + ] + ], + "enum": null + } + } + }, { "name": "Instance rule", "python_name": "Rule", @@ -5215,6 +5465,20 @@ ] ], "enum": null + }, + "translations": { + "description": "A list of translations for the rule, as a dictionary with the key being ISO 639-1 (two-letter) language codes for available languages.", + "field_type": "AttribAccessDict[str, RuleTranslation]", + "field_subtype": null, + "is_optional": false, + "is_nullable": false, + "version_history": [ + [ + "4.4.0", + "added" + ] + ], + "enum": null } } }, @@ -5270,7 +5534,7 @@ ] }, "url": { - "description": "Presumably, a registration related URL. It is unclear what this is for.", + "description": "A custom URL for account registration, when using external authentication.", "field_type": "str", "help_wanted": true, "field_subtype": null, @@ -5279,7 +5543,7 @@ "field_structuretype": "URL", "version_history": [ [ - "4.0.0", + "4.2.0", "added" ] ] @@ -5297,7 +5561,33 @@ "added" ] ] - } + }, + "reason_required": { + "description": "Boolean indicating whether a reason for registration is required on this instance.", + "field_type": "bool", + "field_subtype": null, + "is_optional": false, + "is_nullable": true, + "version_history": [ + [ + "4.4.0", + "added" + ] + ] + }, + "min_age": { + "description": "Minimum age in years required to register on this instance.", + "field_type": "int", + "field_subtype": null, + "is_optional": false, + "is_nullable": true, + "version_history": [ + [ + "4.4.0", + "added" + ] + ] + } } }, { @@ -5545,6 +5835,19 @@ "added" ] ] + }, + "description_limit": { + "description": "Maximum number of characters in a media attachment description this instance allows local users to use.", + "field_type": "int", + "field_subtype": null, + "is_optional": false, + "is_nullable": false, + "version_history": [ + [ + "4.4.0", + "added" + ] + ] } } }, @@ -5703,7 +6006,7 @@ ] }, "metadata": { - "description": "Additional node metadata. On Mastodon, typically an empty object with no fields.", + "description": "Additional node metadata. Can be entirely empty.", "field_type": "NodeinfoMetadata", "field_subtype": null, "is_optional": false, @@ -5892,7 +6195,34 @@ "masto_doc_link": "https://github.com/jhass/nodeinfo", "func_call": "mastodon.instance_nodeinfo().metadata", "description": "Nodeinfo extra metadata. Entirely freeform, be careful about consuming it programatically. Survey of real world usage: https://codeberg.org/thefederationinfo/nodeinfo_metadata_survey", - "fields": {} + "fields": { + "nodeName": { + "description": "Name of the instance, as specified by the instance admin.", + "field_type": "str", + "field_subtype": null, + "is_optional": false, + "is_nullable": false, + "version_history": [ + [ + "4.4.0", + "added" + ] + ] + }, + "nodeDescription": { + "description": "Description of the instance, as specified by the instance admin.", + "field_type": "str", + "field_subtype": null, + "is_optional": false, + "is_nullable": true, + "version_history": [ + [ + "4.4.0", + "added" + ] + ] + } + } }, { "name": "Activity", @@ -6430,6 +6760,19 @@ "added" ] ] + }, + "standard": { + "description": "Boolean indicatign whether the push messages follow the standardized specifications (RFC8030+RFC8291+RFC8292). Else they follow a legacy version of the specifications (4th draft of RFC8291 and 1st draft of RFC8292).", + "field_type": "bool", + "field_subtype": null, + "is_optional": false, + "is_nullable": false, + "version_history": [ + [ + "4.4.0", + "added" + ] + ] } } }, @@ -7209,7 +7552,7 @@ "field_type": "str", "field_subtype": null, "is_optional": false, - "is_nullable": false, + "is_nullable": true, "field_structuretype": "URL", "version_history": [ [ @@ -7224,7 +7567,7 @@ "field_type": "str", "field_subtype": null, "is_optional": false, - "is_nullable": false, + "is_nullable": true, "field_structuretype": "URL", "version_history": [ [ @@ -8588,7 +8931,7 @@ "field_subtype": null, "field_structuretype": null, "is_optional": false, - "is_nullable": false + "is_nullable": true } } }, @@ -9153,6 +9496,21 @@ "field_structuretype": null, "is_optional": true, "is_nullable": false + }, + "date_of_birth": { + "description": "An object giving more details about an error caused by the date of birth.", + "enum": null, + "version_history": [ + [ + "4.4.0", + "added" + ] + ], + "field_type": "NonPaginatableList", + "field_subtype": "AccountCreationErrorDetailsField", + "field_structuretype": null, + "is_optional": true, + "is_nullable": false } } }, diff --git a/tests/cassettes_entity_tests/test_entity_quote.yaml b/tests/cassettes_entity_tests/test_entity_quote.yaml new file mode 100644 index 0000000..ae87ab1 --- /dev/null +++ b/tests/cassettes_entity_tests/test_entity_quote.yaml @@ -0,0 +1,138 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, br + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - mastodonpy + method: GET + uri: https://mastodon.social/api/v1/statuses/115044073088181107 + response: + body: + string: '{"id": "115044073088181107", "created_at": "2025-08-17T12:20:44.088Z", + "in_reply_to_id": "115044053131672379", "in_reply_to_account_id": "109446733188999785", + "sensitive": false, "spoiler_text": "", "visibility": "public", "language": + "en", "uri": "https://bsky.brid.gy/convert/ap/at://did:plc:5syfqzormjkutgo5hi2u2gpr/app.bsky.feed.post/3lwlunj3oqs22", + "url": "https://bsky.brid.gy/r/https://bsky.app/profile/did:plc:5syfqzormjkutgo5hi2u2gpr/post/3lwlunj3oqs22", + "replies_count": 0, "reblogs_count": 0, "favourites_count": 0, "edited_at": + null, "favourited": false, "reblogged": false, "muted": false, "bookmarked": + false, "content": "

actual reply that quotes a post that quotes a post bsky.app/profile/h4lc...

RE: + https://bsky.app/profile/did:plc:5syfqzormjkutgo5hi2u2gpr/post/3lwlumdwf522i

", + "filtered": [], "reblog": null, "account": {"id": "115043949422165680", "username": + "h4lcy.bsky.social", "acct": "h4lcy.bsky.social@bsky.brid.gy", "display_name": + "", "locked": false, "bot": false, "discoverable": true, "indexable": true, + "group": false, "created_at": "2025-07-09T00:00:00.000Z", "note": "\ud83c\udf09 + bridged from h4lcy.bsky.social on Bluesky + by Bridgy + Fed", "url": "https://bsky.brid.gy/r/https://bsky.app/profile/h4lcy.bsky.social", + "uri": "https://bsky.brid.gy/ap/did:plc:5syfqzormjkutgo5hi2u2gpr", "avatar": + "https://files.mastodon.social/cache/accounts/avatars/115/043/949/422/165/680/original/3e1dd77d9101ba91.png", + "avatar_static": "https://files.mastodon.social/cache/accounts/avatars/115/043/949/422/165/680/original/3e1dd77d9101ba91.png", + "header": "https://files.mastodon.social/cache/accounts/headers/115/043/949/422/165/680/original/5e90a3286a31ed8d.png", + "header_static": "https://files.mastodon.social/cache/accounts/headers/115/043/949/422/165/680/original/5e90a3286a31ed8d.png", + "followers_count": 0, "following_count": 0, "statuses_count": 3, "last_status_at": + "2025-08-17", "hide_collections": false, "emojis": [], "fields": [{"name": + "Web site", "value": "https://bsky.app/profile/h4lcy.bsky.social", + "verified_at": null}]}, "media_attachments": [], "mentions": [], "tags": [], + "emojis": [], "quote": {"state": "accepted", "quoted_status": {"id": "115044070560414080", + "created_at": "2025-08-17T12:20:05.117Z", "in_reply_to_id": "115044053131672379", + "in_reply_to_account_id": "109446733188999785", "sensitive": false, "spoiler_text": + "", "visibility": "public", "language": "en", "uri": "https://bsky.brid.gy/convert/ap/at://did:plc:5syfqzormjkutgo5hi2u2gpr/app.bsky.feed.post/3lwlumdwf522i", + "url": "https://bsky.brid.gy/r/https://bsky.app/profile/did:plc:5syfqzormjkutgo5hi2u2gpr/post/3lwlumdwf522i", + "replies_count": 0, "reblogs_count": 0, "favourites_count": 0, "edited_at": + null, "favourited": false, "reblogged": false, "muted": false, "bookmarked": + false, "content": "

actual reply that quotes a bsky post bsky.app/profile/h4lc...

RE: https://bsky.app/profile/did:plc:5syfqzormjkutgo5hi2u2gpr/post/3lwlug73kn22i

", + "filtered": [], "reblog": null, "account": {"id": "115043949422165680", "username": + "h4lcy.bsky.social", "acct": "h4lcy.bsky.social@bsky.brid.gy", "display_name": + "", "locked": false, "bot": false, "discoverable": true, "indexable": true, + "group": false, "created_at": "2025-07-09T00:00:00.000Z", "note": "\ud83c\udf09 + bridged from h4lcy.bsky.social on Bluesky + by Bridgy + Fed", "url": "https://bsky.brid.gy/r/https://bsky.app/profile/h4lcy.bsky.social", + "uri": "https://bsky.brid.gy/ap/did:plc:5syfqzormjkutgo5hi2u2gpr", "avatar": + "https://files.mastodon.social/cache/accounts/avatars/115/043/949/422/165/680/original/3e1dd77d9101ba91.png", + "avatar_static": "https://files.mastodon.social/cache/accounts/avatars/115/043/949/422/165/680/original/3e1dd77d9101ba91.png", + "header": "https://files.mastodon.social/cache/accounts/headers/115/043/949/422/165/680/original/5e90a3286a31ed8d.png", + "header_static": "https://files.mastodon.social/cache/accounts/headers/115/043/949/422/165/680/original/5e90a3286a31ed8d.png", + "followers_count": 0, "following_count": 0, "statuses_count": 3, "last_status_at": + "2025-08-17", "hide_collections": false, "emojis": [], "fields": [{"name": + "Web site", "value": "https://bsky.app/profile/h4lcy.bsky.social", + "verified_at": null}]}, "media_attachments": [], "mentions": [], "tags": [], + "emojis": [], "quote": {"state": "accepted", "quoted_status_id": "115044056977193502"}, + "card": null, "poll": null}}, "card": null, "poll": null}' + headers: + Connection: + - keep-alive + Date: + - Sun, 17 Aug 2025 14:16:04 GMT + Strict-Transport-Security: + - max-age=31557600 + Vary: + - Authorization, Origin, Accept-Encoding + X-Cache: + - MISS, MISS, MISS + X-Cache-Hits: + - 0, 0, 0 + X-Served-By: + - cache-fra-eddf8230164-FRA, cache-fra-eddf8230123-FRA, cache-hel1410027-HEL + X-Timer: + - S1755440164.907276,VS0,VE244 + accept-ranges: + - none + alt-svc: + - h3=":443";ma=86400,h3-29=":443";ma=86400,h3-27=":443";ma=86400 + cache-control: + - private, no-store + content-length: + - '6039' + content-security-policy: + - default-src 'none'; frame-ancestors 'none'; form-action 'none' + content-type: + - application/json; charset=utf-8 + etag: + - W/"d4ceadbc6c817585858affce5de7be25" + referrer-policy: + - same-origin + transfer-encoding: + - chunked + via: + - 1.1 varnish, 1.1 varnish, 1.1 varnish + x-content-type-options: + - nosniff + x-frame-options: + - DENY + x-ratelimit-limit: + - '300' + x-ratelimit-remaining: + - '299' + x-ratelimit-reset: + - '2025-08-17T14:20:00.985158Z' + x-request-id: + - f963a45420343c7de759abae50c08fbc + x-runtime: + - '0.154823' + x-xss-protection: + - '0' + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes_entity_tests/test_entity_ruletranslation.yaml b/tests/cassettes_entity_tests/test_entity_ruletranslation.yaml new file mode 100644 index 0000000..162044e --- /dev/null +++ b/tests/cassettes_entity_tests/test_entity_ruletranslation.yaml @@ -0,0 +1,1244 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, br + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - mastodonpy + method: GET + uri: https://mastodon.social/api/v1/instance/ + response: + body: + string: '{"uri": "mastodon.social", "title": "Mastodon", "short_description": + "The original server operated by the Mastodon gGmbH non-profit", "description": + "", "email": "staff@mastodon.social", "version": "4.5.0-nightly.2025-08-06-security", + "urls": {"streaming_api": "wss://streaming.mastodon.social"}, "stats": {"user_count": + 2848439, "status_count": 142453401, "domain_count": 93764}, "thumbnail": "https://files.mastodon.social/site_uploads/files/000/000/001/@1x/57c12f441d083cde.png", + "languages": ["en"], "registrations": true, "approval_required": false, "invites_enabled": + true, "configuration": {"accounts": {"max_featured_tags": 10}, "statuses": + {"max_characters": 500, "max_media_attachments": 4, "characters_reserved_per_url": + 23}, "media_attachments": {"supported_mime_types": ["image/jpeg", "image/png", + "image/gif", "image/heic", "image/heif", "image/webp", "image/avif", "video/webm", + "video/mp4", "video/quicktime", "video/ogg", "audio/wave", "audio/wav", "audio/x-wav", + "audio/x-pn-wave", "audio/vnd.wave", "audio/ogg", "audio/vorbis", "audio/mpeg", + "audio/mp3", "audio/webm", "audio/flac", "audio/aac", "audio/m4a", "audio/x-m4a", + "audio/mp4", "audio/3gpp", "video/x-ms-asf"], "image_size_limit": 16777216, + "image_matrix_limit": 33177600, "video_size_limit": 103809024, "video_frame_rate_limit": + 120, "video_matrix_limit": 8294400}, "polls": {"max_options": 4, "max_characters_per_option": + 50, "min_expiration": 300, "max_expiration": 2629746}}, "contact_account": + {"id": "13179", "username": "Mastodon", "acct": "Mastodon", "display_name": + "Mastodon", "locked": false, "bot": false, "discoverable": true, "indexable": + false, "group": false, "created_at": "2016-11-23T00:00:00.000Z", "note": "

A + free, open-source decentralised social network to connect with your friends + and others, anywhere.

", "url": "https://mastodon.social/@Mastodon", "uri": + "https://mastodon.social/users/Mastodon", "avatar": "https://files.mastodon.social/accounts/avatars/000/013/179/original/b4ceb19c9c54ec7e.png", + "avatar_static": "https://files.mastodon.social/accounts/avatars/000/013/179/original/b4ceb19c9c54ec7e.png", + "header": "https://files.mastodon.social/accounts/headers/000/013/179/original/1375be116fbe0f1d.png", + "header_static": "https://files.mastodon.social/accounts/headers/000/013/179/original/1375be116fbe0f1d.png", + "followers_count": 846724, "following_count": 35, "statuses_count": 360, "last_status_at": + "2025-08-07", "hide_collections": false, "noindex": false, "emojis": [], "roles": + [], "fields": [{"name": "Homepage", "value": "https://joinmastodon.org", + "verified_at": "2018-10-31T04:11:00.076+00:00"}, {"name": "Patreon", "value": + "https://patreon.com/mastodon", + "verified_at": null}, {"name": "GitHub", "value": "https://github.com/mastodon", + "verified_at": "2023-07-21T13:27:45.996+00:00"}]}, "rules": [{"id": "1", "text": + "Sexually explicit or violent media must be marked as sensitive or with a + content warning", "hint": "This includes content that is particularly provocative + even if it may not show specific body parts, as well as dead bodies, bloody + injuries, and other gore. Particularly obscene content may be prohibited entirely. + Profile pictures and header images may not contain sexually explicit or violent + media.", "translations": {"de": {"text": "Sexuell explizite Darstellungen + oder solche von Gewalt m\u00fcssen mit einer Inhaltswarnung versehen werden.", + "hint": "Das beinhaltet ausdr\u00fccklich provokative Inhalte, auch wenn keine + bestimmten K\u00f6rperteile zu sehen sind, sowie Leichname, blutige Verletzungen + und vergleichbare extreme Darstellungen. Besonders obsz\u00f6ne Inhalte k\u00f6nnen + vollst\u00e4ndig verboten werden. Profil- und Titelbilder d\u00fcrfen keine + sexuell expliziten oder Gewaltdarstellungen abbilden."}, "es": {"text": "El + contenido sexual expl\u00edcito o violento debe marcarse como sensible o con + una advertencia de contenido.", "hint": "Esto incluye contenido especialmente + provocativo, aunque no muestre partes espec\u00edficas del cuerpo, as\u00ed + como cad\u00e1veres, heridas sangrientas y otras escenas sangrientas. Los + contenidos especialmente obscenos pueden prohibirse por completo. Las fotos + de perfil y las im\u00e1genes de cabecera no pueden contener contenido sexual + expl\u00edcito o violento."}, "fr": {"text": "Le contenu \u00e9rotique, pornographique + ou violent doit \u00eatre marqu\u00e9 comme sensible ou avoir un avertissement + de contenu.", "hint": "Cela inclut le contenu particuli\u00e8rement provocateur + m\u00eame s\u2019il ne montre pas particuli\u00e8rement de parties intimes, + ainsi que les photos de cadavres, de blessures sanglantes et autres sc\u00e8nes + d\u00e9rangeantes. Le contenu particuli\u00e8rement obsc\u00e8ne peut \u00eatre + compl\u00e8tement interdit. Les images de profil et d\u2019en-t\u00eate ne + doivent pas contenir de contenu sexuellement explicite ou violent."}, "nl": + {"text": "Seksueel expliciet of gewelddadig beeldmateriaal moet als \u2018gevoelig\u2019 + gemarkeerd worden, of met een inhoudswaarschuwing gemarkeerd.", "hint": "Dit + omvat ook inhoud die gedeeltelijk aanstootgevend is zelfs als het geen lichaamsdelen + toont, en ook dode lichamen, bloederige verwondingen en andere gruwelijkheden. + Zeer obscene inhoud kan helemaal verboden worden. Profielfoto\u2019s en headerafbeeldingen + mogen geen seksueel expliciete of geweldadige inhoud hebben."}, "ru": {"text": + "\u0421\u0435\u043a\u0441\u0443\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u044b\u0435 + \u0438\u043b\u0438 \u0436\u0435\u0441\u0442\u043e\u043a\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f + \u0438\u043b\u0438 \u0432\u0438\u0434\u0435\u043e \u0434\u043e\u043b\u0436\u043d\u044b + \u0431\u044b\u0442\u044c \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b + \u043a\u0430\u043a \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 + \u0438\u043b\u0438 \u0441\u043a\u0440\u044b\u0442\u044b \u043f\u043e\u0434 + \u0441\u043f\u043e\u0439\u043b\u0435\u0440.", "hint": "\u042d\u0442\u043e + \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f + \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0432\u043e\u0446\u0438\u0440\u0443\u044e\u0449\u0438\u0439 + \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 + \u043e\u043d \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 + \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 + \u0442\u0435\u043b\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043c\u0451\u0440\u0442\u0432\u044b\u0435 + \u0442\u0435\u043b\u0430, \u043e\u043a\u0440\u043e\u0432\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 + \u0440\u0430\u043d\u044b \u0438 \u043f\u0440\u043e\u0447\u0443\u044e \u043a\u0440\u043e\u0432\u044c. + \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0436\u0435\u0441\u0442\u043e\u043a\u0438\u0439 + \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 + \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d + \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e. \u0410\u0432\u0430\u0442\u0430\u0440\u044b + \u0438 \u043e\u0431\u043b\u043e\u0436\u043a\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439 + \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c + \u0441\u0435\u043a\u0441\u0443\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u044b\u0435 + \u0438\u043b\u0438 \u0436\u0435\u0441\u0442\u043e\u043a\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f."}, + "zh-CN": {"text": "\u8272\u60c5\u6216\u66b4\u529b\u5a92\u4f53\u5fc5\u987b\u6807\u8bb0\u4e3a\u654f\u611f\u6216\u6709\u5185\u5bb9\u8b66\u544a", + "hint": "\u8fd9\u5305\u62ec\u7279\u522b\u6311\u9017\u6027\u7684\u5185\u5bb9\uff0c\u5373\u4f7f\u5b83\u53ef\u80fd\u6ca1\u6709\u663e\u793a\u7279\u5b9a\u7684\u8eab\u4f53\u90e8\u4f4d\uff0c\u4ee5\u53ca\u5c38\u4f53\u3001\u8840\u8165\u4f24\u5bb3\u548c\u5176\u4ed6\u8840\u8165\u5185\u5bb9\u3002\u7279\u522b\u6deb\u79fd\u7684\u5185\u5bb9\u53ef\u80fd\u4f1a\u88ab\u5b8c\u5168\u7981\u6b62\u3002\u4e2a\u4eba\u8d44\u6599\u56fe\u7247\u548c\u5934\u50cf\u4e0d\u5f97\u5305\u542b\u8272\u60c5\u6216\u66b4\u529b\u5185\u5bb9\u3002"}, + "zh-TW": {"text": "\u6027\u6697\u793a\u6216\u66b4\u529b\u5a92\u9ad4\u5fc5\u9808\u6a19\u793a\u70ba\u654f\u611f\u6216\u9644\u5e36\u5167\u5bb9\u8b66\u793a", + "hint": "\u9019\u5305\u62ec\u7279\u5225\u6311\u91c1\u7684\u5167\u5bb9\uff0c\u5373\u4f7f\u5b83\u53ef\u80fd\u6c92\u6709\u986f\u793a\u7279\u5b9a\u7684\u8eab\u9ad4\u90e8\u4f4d\uff0c\u4ee5\u53ca\u5c4d\u9ad4\u3001\u8840\u8165\u50b7\u5bb3\u548c\u5176\u4ed6\u8840\u8165\u5167\u5bb9\u3002\u7279\u5225\u7325\u893b\u7684\u5167\u5bb9\u53ef\u80fd\u6703\u88ab\u5b8c\u5168\u7981\u6b62\u3002\u500b\u4eba\u6a94\u6848\u5716\u7247\u548c\u6a19\u984c\u5716\u7247\u4e0d\u5f97\u5305\u542b\u8272\u60c5\u6216\u66b4\u529b\u5a92\u9ad4\u3002"}}}, + {"id": "2", "text": "No racism, sexism, homophobia, transphobia, ableism, + xenophobia, or casteism.", "hint": "Transphobic behavior such as intentional + misgendering and deadnaming is strictly prohibited. Promotion of \"conversion + therapy\" is strictly prohibited. Criticism of governments and religions is + permissible unless being used as a proxy for discrimination.", "translations": + {"de": {"text": "Kein(e) Rassismus, Sexismus, Homophobie, Transphobie, Behindertenfeindlichkeit, + Fremdenfeindlichkeit oder Kasteismus.", "hint": "Transphobes Verhalten wie + die absichtliche Verwendung von falschen Anreden und Pronomen sowie Deadnaming + ist strengstens verboten. Die Werbung f\u00fcr Konversionstherapien ist strengstens + verboten. Die Kritik an Regierungen und Religionen ist zul\u00e4ssig, sofern + sie nicht stellvertretend f\u00fcr Diskriminierung verwendet wird."}, "es": + {"text": "Prohibido el racismo, sexismo, homofobia, transfobia, able\u00edsmo, + xenofobia o casticismo.", "hint": "Queda terminantemente prohibido el comportamiento + transf\u00f3bico, como el uso intencionado de nombres falsos o el \"deadnaming\". + La promoci\u00f3n de la \"terapia de conversi\u00f3n\" est\u00e1 estrictamente + prohibida. Se permiten las cr\u00edticas a gobiernos y religiones, a menos + que se utilicen como excusa para la discriminaci\u00f3n."}, "fr": {"text": + "Pas de racisme, sexisme, homophobie, transphobie, validisme, x\u00e9nophobie + ou discrimination de caste.", "hint": "Les comportements intentionnellement + transphobes, comme le m\u00e9genrage ou le morinommage (\u201cdeadnaming\u201d) + est strictement interdit. La promotion des \u201cth\u00e9rapies de conversion\u201d + est strictement interdite. La critique des gouvernements et religions est + autoris\u00e9e, sauf dans les cas ou elle est utilis\u00e9e comme paravent + pour de la discrimination."}, "nl": {"text": "Geen racisme, seksisme, homofobie, + transfobie, validisme, xenofobie of kastendiscriminatie.", "hint": "Transfobisch + gedrag zoals opzettelijk misgenderen en deadnaming is ten strengste verboden. + Het promoten van \u201cconversie therapie\u201d is ten strengste verboden. + Kritiek op overheden en religies is toegestaan tenzij het wordt gebruikt als + proxy voor racisme."}, "ru": {"text": "\u0417\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442\u0441\u044f + \u0440\u0430\u0441\u0438\u0437\u043c, \u0441\u0435\u043a\u0441\u0438\u0437\u043c, + \u0433\u043e\u043c\u043e\u0444\u043e\u0431\u0438\u044f, \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0431\u0438\u044f, + \u044d\u0439\u0431\u043b\u0438\u0437\u043c, \u043a\u0441\u0435\u043d\u043e\u0444\u043e\u0431\u0438\u044f + \u0438 \u043a\u0430\u0441\u0442\u043e\u0432\u043e\u0441\u0442\u044c.", "hint": + "\u0422\u0440\u0430\u043d\u0441\u0444\u043e\u0431\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, + \u0442\u0430\u043a\u043e\u0435 \u043a\u0430\u043a \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u044b\u0439 + \u043c\u0438\u0441\u0433\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u0438 + \u0434\u0435\u0434\u043d\u0435\u0439\u043c\u0438\u043d\u0433, \u0441\u0442\u0440\u043e\u0433\u043e + \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e. \u041f\u0440\u043e\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 + \"\u043a\u043e\u043d\u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0439 + \u0442\u0435\u0440\u0430\u043f\u0438\u0438\" \u0441\u0442\u0440\u043e\u0433\u043e + \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e. \u041a\u0440\u0438\u0442\u0438\u043a\u0430 + \u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u0438 + \u0440\u0435\u043b\u0438\u0433\u0438\u0439 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0430, + \u043a\u0440\u043e\u043c\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, + \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f + \u043a\u0430\u043a \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d\u0438\u0435 + \u0434\u043b\u044f \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0446\u0438\u0438."}, + "zh-CN": {"text": "\u7981\u6b62\u79cd\u65cf\u4e3b\u4e49\u3001\u6027\u522b\u6b67\u89c6\u3001\u4ec7\u89c6\u540c\u6027\u604b\u3001\u4ec7\u89c6\u53d8\u6027\u8005\u3001\u5f02\u80fd\u8005\u3001\u4ec7\u5916\u5fc3\u7406\u6216\u79cd\u59d3\u6b67\u89c6\u3002", + "hint": "\u4e25\u7981\u53d8\u6027\u4ec7\u89c6\u884c\u4e3a\uff0c\u5982\u6545\u610f\u8bef\u7528\u6027\u522b\u548c\u6b7b\u540d\u3002\u4e25\u7981\u5ba3\u4f20 + \u201c\u8f6c\u6362\u7597\u6cd5\u201d\u3002\u5141\u8bb8\u6279\u8bc4\u653f\u5e9c\u548c\u5b97\u6559\uff0c\u9664\u975e\u88ab\u7528\u4f5c\u6b67\u89c6\u7684\u4ee3\u540d\u8bcd\u3002"}, + "zh-TW": {"text": "\u7981\u6b62\u7a2e\u65cf\u4e3b\u7fa9\u3001\u6027\u5225\u4e3b\u7fa9\u3001\u6050\u540c\u4e3b\u7fa9\u3001\u6050\u8b8a\u6027\u4e3b\u7fa9\u3001\u80fd\u529b\u4e3b\u7fa9\u3001\u4ec7\u5916\u4e3b\u7fa9\u6216\u7a2e\u6027\u4e3b\u7fa9\u3002", + "hint": "\u56b4\u7981\u8b8a\u6027\u4ec7\u8996\u884c\u70ba\uff0c\u4f8b\u5982\u6545\u610f\u8aa4\u7528\u6027\u5225\u548c\u66b1\u7a31\u3002\u56b4\u7981\u5ba3\u50b3\u300c\u626d\u8f49\u6cbb\u7642\u300d\u3002\u5141\u8a31\u6279\u8a55\u653f\u5e9c\u548c\u5b97\u6559\uff0c\u9664\u975e\u88ab\u7528\u4f86\u4ee3\u8868\u6b67\u8996\u3002"}}}, + {"id": "3", "text": "No incitement of violence or promotion of violent ideologies", + "hint": "Calling for people or groups to be assassinated, murdered, or attacked + physically is strictly prohibited. Support for violent groups or events is + prohibited.", "translations": {"de": {"text": "Keine Anstiftung zu Gewalt + oder F\u00f6rderung gewaltt\u00e4tiger Ideologien.", "hint": "Der Aufruf zum + Mord oder k\u00f6rperlichen Attacken auf Personen oder Gruppen ist strengstens + verboten. Die Unterst\u00fctzung gewaltt\u00e4tiger Gruppen oder Veranstaltungen + ist verboten."}, "es": {"text": "Prohibida la incitaci\u00f3n a la violencia + o la promoci\u00f3n de ideolog\u00edas violentas.", "hint": "Est\u00e1 estrictamente + prohibido hacer llamamientos para que se asesine, mate o agreda f\u00edsicamente + a personas o grupos. Est\u00e1 prohibido apoyar a grupos o acontecimientos + violentos."}, "fr": {"text": "Pas d\u2019incitation \u00e0 la violence ou + de promotion d\u2019id\u00e9ologies violentes.", "hint": "L\u2019appel au + meutre, \u00e0 la violence ou \u00e0 l\u2019action physique envers des personnes + ou des groupes de personnes est strictement interdit. Le soutien \u00e0 des + groupes ou \u00e9v\u00e8nements violents est interdit."}, "nl": {"text": "Niet + aanzetten tot geweld of verspreiden van gewelddadige ideologie\u00ebn.", "hint": + "Mensen of groepen aanzetten tot moord, aanslagen of fysieke aanvallen is + ten strengste verboden. Steun voor gewelddadige groeperingen of evenementen + is verboden."}, "ru": {"text": "\u0417\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442\u0441\u044f + \u043f\u043e\u0434\u0441\u0442\u0440\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e + \u043a \u0436\u0435\u0441\u0442\u043e\u043a\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 + \u043f\u0440\u043e\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0436\u0435\u0441\u0442\u043e\u043a\u0438\u0445 + \u0438\u0434\u0435\u043e\u043b\u043e\u0433\u0438\u0439.", "hint": "\u041f\u0440\u0438\u0437\u044b\u0432\u044b + \u043a \u043f\u043e\u043a\u0443\u0448\u0435\u043d\u0438\u044f\u043c, \u0443\u0431\u0438\u0439\u0441\u0442\u0432\u0430\u043c + \u0438 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0430\u0442\u0430\u043a\u0430\u043c + \u043d\u0430 \u043b\u044e\u0434\u0435\u0439 \u0438\u043b\u0438 \u0433\u0440\u0443\u043f\u043f\u044b + \u043b\u044e\u0434\u0435\u0439 \u0441\u0442\u0440\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u044b. + \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0436\u0435\u0441\u0442\u043e\u043a\u0438\u0445 + \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432 \u0438\u043b\u0438 + \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u0430."}, + "zh-CN": {"text": "\u4e0d\u5f97\u717d\u52a8\u66b4\u529b\u6216\u5ba3\u626c\u66b4\u529b\u610f\u8bc6\u5f62\u6001", + "hint": "\u4e25\u7981\u547c\u5401\u6697\u6740\u3001\u8c0b\u6740\u6216\u4eba\u8eab\u653b\u51fb\u4ed6\u4eba\u6216\u56e2\u4f53\u3002\u7981\u6b62\u652f\u6301\u66b4\u529b\u56e2\u4f53\u6216\u4e8b\u4ef6\u3002"}, + "zh-TW": {"text": "\u56b4\u7981\u717d\u52d5\u66b4\u529b\u6216\u5ba3\u63da\u66b4\u529b\u610f\u8b58\u5f62\u614b", + "hint": "\u56b4\u7981\u547c\u7c72\u6697\u6bba\u3001\u8b00\u6bba\u6216\u4eba\u8eab\u653b\u64ca\u4ed6\u4eba\u6216\u5718\u9ad4\u3002\u56b4\u7981\u652f\u6301\u66b4\u529b\u5718\u9ad4\u6216\u4e8b\u4ef6\u3002"}}}, + {"id": "4", "text": "No harassment, block evasion, dogpiling, or doxxing of + others", "hint": "Repeat attempts to communicate with users who have blocked + you or creation of accounts solely to harass or insult individuals is strictly + prohibited. Coordinated activity to attack other users is prohibited. Posting + of private personal information about others is prohibited.", "translations": + {"de": {"text": "Keine Bel\u00e4stigungen, Umgehung von Blockierungen, Dogpiling + oder Doxxing.", "hint": "Wiederholte Kommunikationsversuche mit Profilen, + die dich blockiert haben, oder die Erstellung neuer Konten, die ausschlie\u00dflich + dazu dienen, andere zu bel\u00e4stigen oder zu beleidigen, sind strengstens + verboten. Koordinierte Angriffe auf andere Profile sind verboten. Die Ver\u00f6ffentlichung + von privaten und pers\u00f6nlichen Informationen anderer ist verboten."}, + "es": {"text": "No acosar, evadir bloqueos, \"dogpiling\" (abuso en l\u00ednea + por grupos de acosadores) o doxeo de otros.", "hint": "Est\u00e1 estrictamente + prohibido intentar comunicarse repetidamente con usuarios que te hayan bloqueado + o crear cuentas con el \u00fanico fin de acosar o insultar a otras personas. + Queda prohibida la actividad coordinada para atacar a otros usuarios. Est\u00e1 + prohibido publicar informaci\u00f3n personal privada sobre otras personas."}, + "fr": {"text": "Pas de harc\u00e8lement, d\u2019esquive de blocage, de \u201cdogpiling\u201d, + ou de divulgation de donn\u00e9es personnelles d\u2019autrui.", "hint": "Les + tentatives r\u00e9p\u00e9t\u00e9es de communiquer avec des utilisateur\u00b7ices + qui vont ont bloqu\u00e9 ainsi que la cr\u00e9ation de comptes pour harceler + ou insulter autrui sont strictement interdites. Les attaques coordonn\u00e9es + contre autrui sont interdites. La publication de donn\u00e9es personnelles + d\u2019autrui est interdite."}, "nl": {"text": "Geen intimidatie, omzeilen + van blokkades, groepsaanvallen of het verspreiden van priv\u00e9gegevens van + anderen.", "hint": "Herhaalde pogingen tot communiceren met gebruikers die + je hebben geblokkeerd, of het maken van accounts enkel om personen te intimideren + of beledigen is ten strengste verboden. Geco\u00f6rdineerde activiteit om + andere gebruikers aan te vallen is verboden. Het plaatsen van priv\u00e9-gegevens + van anderen is verboden."}, "ru": {"text": "\u0417\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442\u0441\u044f + \u0442\u0440\u0430\u0432\u043b\u044f, \u0438\u0437\u0431\u0435\u0433\u0430\u043d\u0438\u0435 + \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a, \u043d\u0430\u0431\u0435\u0433\u0438 + \u0438 \u0440\u0430\u0437\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 + \u043b\u0438\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 + \u0434\u0440\u0443\u0433\u0438\u0445 \u043b\u0438\u0446.", "hint": "\u041f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0435\u0441\u044f + \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c + \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438, + \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u0441 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043b\u0438, + \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0443\u0447\u0451\u0442\u043d\u044b\u0445 + \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e + \u0440\u0430\u0434\u0438 \u0442\u0440\u0430\u0432\u043b\u0438 \u0438\u043b\u0438 + \u043e\u0441\u043a\u043e\u0440\u0431\u043b\u0435\u043d\u0438\u0439, \u0441\u0442\u0440\u043e\u0433\u043e + \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u044b. \u0421\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f + \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0441 \u0446\u0435\u043b\u044c\u044e + \u0430\u0442\u0430\u043a\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 + \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 + \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u0430. \u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f + \u043b\u0438\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 + \u0434\u0440\u0443\u0433\u0438\u0445 \u043b\u0438\u0446 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u0430."}, + "zh-CN": {"text": "\u4e0d\u5f97\u9a9a\u6270\u3001\u56de\u907f\u5c01\u7981\u3001\u8bfd\u8c24\u6216\u653b\u51fb\u4ed6\u4eba", + "hint": "\u4e25\u7981\u91cd\u590d\u5c1d\u8bd5\u4e0e\u5df2\u5c01\u7981\u60a8\u7684\u7528\u6237\u4ea4\u6d41\uff0c\u6216\u4ec5\u4e3a\u9a9a\u6270\u6216\u4fae\u8fb1\u4ed6\u4eba\u800c\u521b\u5efa\u8d26\u6237\u3002\u4e25\u7981\u534f\u540c\u653b\u51fb\u5176\u4ed6\u7528\u6237\u3002\u7981\u6b62\u53d1\u5e03\u4ed6\u4eba\u7684\u79c1\u4eba\u4e2a\u4eba\u4fe1\u606f\u3002"}, + "zh-TW": {"text": "\u56b4\u7981\u9a37\u64fe\u3001\u8ff4\u907f\u5c01\u9396\u3001\u717d\u52d5\u6216\u8aa3\u884a\u4ed6\u4eba", + "hint": "\u56b4\u7981\u91cd\u8907\u5617\u8a66\u8207\u5df2\u5c01\u9396\u60a8\u7684\u4f7f\u7528\u8005\u6e9d\u901a\uff0c\u6216\u7d14\u7cb9\u70ba\u4e86\u9a37\u64fe\u6216\u4fae\u8fb1\u4ed6\u4eba\u800c\u5efa\u7acb\u5e33\u865f\u3002\u7981\u6b62\u653b\u64ca\u5176\u4ed6\u4f7f\u7528\u8005\u7684\u5354\u8abf\u6d3b\u52d5\u3002\u7981\u6b62\u5f35\u8cbc\u4ed6\u4eba\u7684\u79c1\u4eba\u500b\u4eba\u8cc7\u8a0a\u3002"}}}, + {"id": "7", "text": "Do not share information widely-known to be false and + misleading", "hint": "False and misleading information and links from low-quality + sources may not be posted, especially if they are likely to mislead or confuse + others or endanger their safety.", "translations": {"de": {"text": "Verbreitet + keine Informationen, von denen allgemein bekannt ist, dass sie falsch oder + irref\u00fchrend.", "hint": "Falsche und irref\u00fchrende Informationen sowie + Links aus unseri\u00f6sen Quellen d\u00fcrfen nicht gepostet werden, insbesondere + wenn sie geeignet sind, andere in die Irre zu f\u00fchren oder deren Sicherheit + zu gef\u00e4hrden."}, "es": {"text": "No compartas informaci\u00f3n ampliamente + conocida por ser falsa y enga\u00f1osa.", "hint": "No est\u00e1 permitido + publicar informaci\u00f3n falsa y enga\u00f1osa ni enlaces de fuentes de baja + calidad, especialmente si pueden inducir a error o confusi\u00f3n a otras + personas o poner en peligro su seguridad."}, "fr": {"text": "Ne partagez pas + d\u2019informations connues pour \u00eatre fausses ou trompeuses.", "hint": + "Les informations fausses ou trompeuses, ainsi que les liens vers des sources + de mauvaise qualit\u00e9 ne doivent pas \u00eatre publi\u00e9es, particuli\u00e8rement + si elles risquent de tromper, d\u2019induire en erreur, de semer la confusion + ou de mettre des personnes en danger."}, "nl": {"text": "Deel geen informatie + die algemeen bekend staat als onjuist en misleidend.", "hint": "Onjuiste en + misleidende informatie en links naar onbetrouwbare bronnen mogen niet geplaatst + worden, zeker als deze waarschijnlijk anderen misleiden of verwarren, of hun + veiligheid in gevaar brengt."}, "ru": {"text": "\u041d\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0439\u0442\u0435 + \u0437\u0430\u0432\u0435\u0434\u043e\u043c\u043e \u043b\u043e\u0436\u043d\u0443\u044e + \u0438 \u0432\u0432\u043e\u0434\u044f\u0449\u0443\u044e \u0432 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0435 + \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e.", "hint": "\u0417\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u0430 + \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043b\u043e\u0436\u043d\u043e\u0439 + \u0438 \u0432\u0432\u043e\u0434\u044f\u0449\u0435\u0439 \u0432 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0435 + \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 \u0441\u0441\u044b\u043b\u043e\u043a + \u0438\u0437 \u043d\u0438\u0437\u043a\u043e\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 + \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e + \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 + \u0441\u0431\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0445 \u043b\u044e\u0434\u0435\u0439 + \u0441 \u0442\u043e\u043b\u043a\u0443, \u0437\u0430\u043f\u0443\u0442\u0430\u0442\u044c + \u0438\u0445, \u0438\u043b\u0438 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044c + \u0438\u0445 \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438."}, "zh-CN": + {"text": "\u4e0d\u5f97\u5206\u4eab\u4f17\u6240\u5468\u77e5\u7684\u865a\u5047\u548c\u8bef\u5bfc\u6027\u4fe1\u606f\r\n", + "hint": "\u4e0d\u5f97\u53d1\u5e03\u865a\u5047\u548c\u8bef\u5bfc\u6027\u4fe1\u606f\u4ee5\u53ca\u6765\u81ea\u4f4e\u8d28\u91cf\u6765\u6e90\u7684\u94fe\u63a5\uff0c\u5c24\u5176\u662f\u53ef\u80fd\u8bef\u5bfc\u6216\u6df7\u6dc6\u4ed6\u4eba\u6216\u5371\u53ca\u4ed6\u4eba\u5b89\u5168\u7684\u4fe1\u606f\u3002"}, + "zh-TW": {"text": "\u8acb\u52ff\u5206\u4eab\u5ee3\u70ba\u4eba\u77e5\u7684\u865b\u5047\u548c\u8aa4\u5c0e\u8cc7\u8a0a", + "hint": "\u4e0d\u5f97\u5f35\u8cbc\u865b\u5047\u548c\u8aa4\u5c0e\u8cc7\u8a0a\u4ee5\u53ca\u4f86\u81ea\u4f4e\u54c1\u8cea\u4f86\u6e90\u7684\u9023\u7d50\uff0c\u5c24\u5176\u662f\u53ef\u80fd\u8aa4\u5c0e\u6216\u6df7\u6dc6\u4ed6\u4eba\u6216\u5371\u5bb3\u4ed6\u4eba\u5b89\u5168\u7684\u8cc7\u8a0a\u3002"}}}, + {"id": "1008", "text": "Content created by others must be attributed, and + use of generative AI must be disclosed", "hint": "Content created by others + must clearly provide a reference to the author, creator, or source. For adult + content, this should include performers. Accounts may not solely post AI-generated + content.", "translations": {"de": {"text": "Von anderen erstellte Inhalte + m\u00fcssen gekennzeichnet und die Nutzung generativer KI offengelegt werden.", + "hint": "Von anderen erstellte Inhalte m\u00fcssen durch einen eindeutigen + Verweis auf den/die Autor*in oder die Quelle gekennzeichnet werden. Bei nicht + jugendfreien Inhalten sollte dies auch die Darsteller*innen einschlie\u00dfen. + Konten d\u00fcrfen nicht ausschlie\u00dflich KI-generierte Inhalte posten."}, + "es": {"text": "Los contenidos creados por terceros deben ser atribuidos y + el uso de IA debe ser revelado.", "hint": "Los contenidos creados por terceros + deben proporcionar claramente una referencia al autor, creador o fuente. En + el caso de los contenidos para adultos, debe incluirse a los artistas. Las + cuentas no pueden publicar \u00fanicamente contenidos generados por IA."}, + "fr": {"text": "Le contenu cr\u00e9e par autrui doit \u00eatre attribu\u00e9, + et l\u2019utilisation d\u2019IA g\u00e9n\u00e9rative doit \u00eatre marqu\u00e9 + comme tel.", "hint": "Le contenu cr\u00e9\u00e9 par autrui doit fournir une + r\u00e9f\u00e9rence explicite \u00e0 son auteur\u00b7ice, cr\u00e9ateur\u00b7ice + ou sa source. Cela inclut les acteur\u00b7ice de contenu pour adulte. Les + comptes publiant exclusivement du contenu g\u00e9n\u00e9r\u00e9 par IA sont + interdits."}, "nl": {"text": "Inhoud gemaakt door anderen moet worden toegeschreven, + en het gebruik van generatieve AI moet worden aangegeven.", "hint": "Inhoud + gemaakt door anderen moet een duidelijke referentie naar de auteur, maker + of bron bevatten. Voor Content created by others must clearly provide a reference + to the author, creator, or source. Voor inhoud voor volwassenen, moet het + model worden vermeld. Accounts mogen niet uitsluitend door AI gegenereerde + inhoud plaatsen."}, "ru": {"text": "\u041a\u043e\u043d\u0442\u0435\u043d\u0442, + \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0434\u0440\u0443\u0433\u0438\u043c\u0438, + \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c\u0441\u044f + \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0430\u0432\u0442\u043e\u0440\u0441\u0442\u0432\u0430, + \u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 + \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e + \u0418\u0418 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c + \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u043e.", "hint": "\u041a\u043e\u043d\u0442\u0435\u043d\u0442, + \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0434\u0440\u0443\u0433\u0438\u043c\u0438, + \u0434\u043e\u043b\u0436\u0435\u043d \u044f\u0432\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c + \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f + \u043e\u0442\u0441\u044b\u043b\u043a\u043e\u0439 \u043a \u0430\u0432\u0442\u043e\u0440\u0443, + \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044e \u0438\u043b\u0438 + \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0443. \u0414\u043b\u044f + \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0445 + \u044d\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 + \u0441\u0435\u0431\u044f \u0430\u043a\u0442\u0451\u0440\u043e\u0432. \u0423\u0447\u0451\u0442\u043d\u044b\u0435 + \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 + \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e + \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 + \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0418\u0418."}, "zh-CN": + {"text": "\u4ed6\u4eba\u521b\u5efa\u7684\u5185\u5bb9\u5fc5\u987b\u6ce8\u660e\u51fa\u5904\uff0c\u4f7f\u7528\u4eba\u5de5\u667a\u80fd\u4ea7\u751f\u7684\u5185\u5bb9\u5fc5\u987b\u516c\u5f00\u548c\u62ab\u9732\u8bf4\u660e", + "hint": "\u4ed6\u4eba\u521b\u5efa\u7684\u5185\u5bb9\u5fc5\u987b\u660e\u786e\u6ce8\u660e\u4f5c\u8005\u3001\u521b\u5efa\u8005\u6216\u6765\u6e90\u3002\u5bf9\u4e8e\u6210\u4eba\u5185\u5bb9\uff0c\u5e94\u5305\u62ec\u8868\u6f14\u8005\u3002\u8d26\u6237\u4e0d\u5f97\u4ec5\u53d1\u5e03\u4eba\u5de5\u667a\u80fd\u751f\u6210\u7684\u5185\u5bb9\u3002"}, + "zh-TW": {"text": "\u7531\u4ed6\u4eba\u5275\u4f5c\u7684\u5167\u5bb9\u5fc5\u9808\u8a3b\u660e\u4f86\u6e90\uff0c\u4f7f\u7528\u4eba\u5de5\u667a\u80fd\u7522\u751f\u7684\u5167\u5bb9\u5fc5\u9808\u516c\u958b\u548c\u62ab\u9732\u8aaa\u660e", + "hint": "\u4ed6\u4eba\u5275\u4f5c\u7684\u5167\u5bb9\u5fc5\u9808\u6e05\u695a\u63d0\u4f9b\u4f5c\u8005\u3001\u5275\u4f5c\u4eba\u6216\u4f86\u6e90\u7684\u53c3\u7167\u3002\u5c0d\u65bc\u6210\u4eba\u5167\u5bb9\uff0c\u9019\u61c9\u8a72\u5305\u62ec\u8868\u6f14\u8005\u3002\u5e33\u6236\u4e0d\u5f97\u50c5\u767c\u4f48\u4eba\u5de5\u667a\u80fd\u7522\u751f\u7684\u5167\u5bb9\u3002"}}}]}' + headers: + Accept-Ranges: + - bytes + Age: + - '109' + Connection: + - keep-alive + Date: + - Sun, 17 Aug 2025 14:16:13 GMT + Strict-Transport-Security: + - max-age=31557600 + Vary: + - Accept, Origin, Accept-Encoding + X-Cache: + - MISS, HIT, HIT + X-Cache-Hits: + - 0, 28, 1 + X-Served-By: + - cache-fra-eddf8230170-FRA, cache-fra-eddf8230152-FRA, cache-hel1410024-HEL + X-Timer: + - S1755440174.935445,VS0,VE29 + alt-svc: + - h3=":443";ma=86400,h3-29=":443";ma=86400,h3-27=":443";ma=86400 + cache-control: + - max-age=300, public, stale-while-revalidate=30, stale-if-error=86400 + content-length: + - '22325' + content-security-policy: + - default-src 'none'; frame-ancestors 'none'; form-action 'none' + content-type: + - application/json; charset=utf-8 + deprecation: + - '@1668384000' + etag: + - W/"8e6ad37b672601191e8f70de8d888a1d" + referrer-policy: + - same-origin + via: + - 1.1 varnish, 1.1 varnish, 1.1 varnish + x-content-type-options: + - nosniff + x-frame-options: + - DENY + x-ratelimit-limit: + - '300' + x-ratelimit-remaining: + - '92' + x-ratelimit-reset: + - '2025-08-17T14:10:00.572473Z' + x-request-id: + - 100e8f841e3924d5d3964b56ee7af3d8 + x-runtime: + - '0.045602' + x-xss-protection: + - '0' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, br + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - mastodonpy + method: GET + uri: https://mastodon.social/api/v2/instance/ + response: + body: + string: '{"domain": "mastodon.social", "title": "Mastodon", "version": "4.5.0-nightly.2025-08-06-security", + "source_url": "https://github.com/mastodon/mastodon", "description": "The + original server operated by the Mastodon gGmbH non-profit", "usage": {"users": + {"active_month": 271988}}, "thumbnail": {"url": "https://files.mastodon.social/site_uploads/files/000/000/001/@1x/57c12f441d083cde.png", + "blurhash": "UeKUpFxuo~R%0nW;WCnhF6RjaJt757oJodS$", "versions": {"@1x": "https://files.mastodon.social/site_uploads/files/000/000/001/@1x/57c12f441d083cde.png", + "@2x": "https://files.mastodon.social/site_uploads/files/000/000/001/@2x/57c12f441d083cde.png"}}, + "icon": [{"src": "https://mastodon.social/packs/assets/android-chrome-36x36-DLiBQg3N.png", + "size": "36x36"}, {"src": "https://mastodon.social/packs/assets/android-chrome-48x48-C7lKWFwX.png", + "size": "48x48"}, {"src": "https://mastodon.social/packs/assets/android-chrome-72x72-9LRpA3QN.png", + "size": "72x72"}, {"src": "https://mastodon.social/packs/assets/android-chrome-96x96-BKKwkkY-.png", + "size": "96x96"}, {"src": "https://mastodon.social/packs/assets/android-chrome-144x144-D-ewI-KZ.png", + "size": "144x144"}, {"src": "https://mastodon.social/packs/assets/android-chrome-192x192-jYKJbpas.png", + "size": "192x192"}, {"src": "https://mastodon.social/packs/assets/android-chrome-256x256-DXt2vsq7.png", + "size": "256x256"}, {"src": "https://mastodon.social/packs/assets/android-chrome-384x384-CbK7cG33.png", + "size": "384x384"}, {"src": "https://mastodon.social/packs/assets/android-chrome-512x512-Dz2ThkhV.png", + "size": "512x512"}], "languages": ["en"], "configuration": {"urls": {"streaming": + "wss://streaming.mastodon.social", "status": "https://status.mastodon.social", + "about": "https://mastodon.social/about", "privacy_policy": "https://mastodon.social/privacy-policy", + "terms_of_service": null}, "vapid": {"public_key": "BCk-QqERU0q-CfYZjcuB6lnyyOYfJ2AifKqfeGIm7Z-HiTU5T9eTG5GxVA0_OH5mMlI4UkkDTpaZwozy0TzdZ2M="}, + "accounts": {"max_featured_tags": 10, "max_pinned_statuses": 5}, "statuses": + {"max_characters": 500, "max_media_attachments": 4, "characters_reserved_per_url": + 23}, "media_attachments": {"description_limit": 1500, "image_matrix_limit": + 33177600, "image_size_limit": 16777216, "supported_mime_types": ["image/jpeg", + "image/png", "image/gif", "image/heic", "image/heif", "image/webp", "image/avif", + "video/webm", "video/mp4", "video/quicktime", "video/ogg", "audio/wave", "audio/wav", + "audio/x-wav", "audio/x-pn-wave", "audio/vnd.wave", "audio/ogg", "audio/vorbis", + "audio/mpeg", "audio/mp3", "audio/webm", "audio/flac", "audio/aac", "audio/m4a", + "audio/x-m4a", "audio/mp4", "audio/3gpp", "video/x-ms-asf"], "video_frame_rate_limit": + 120, "video_matrix_limit": 8294400, "video_size_limit": 103809024}, "polls": + {"max_options": 4, "max_characters_per_option": 50, "min_expiration": 300, + "max_expiration": 2629746}, "translation": {"enabled": true}, "limited_federation": + false}, "registrations": {"enabled": true, "approval_required": false, "reason_required": + false, "message": null, "min_age": 16, "url": null}, "api_versions": {"mastodon": + 6}, "contact": {"email": "staff@mastodon.social", "account": {"id": "13179", + "username": "Mastodon", "acct": "Mastodon", "display_name": "Mastodon", "locked": + false, "bot": false, "discoverable": true, "indexable": false, "group": false, + "created_at": "2016-11-23T00:00:00.000Z", "note": "

A free, open-source + decentralised social network to connect with your friends and others, anywhere.

", + "url": "https://mastodon.social/@Mastodon", "uri": "https://mastodon.social/users/Mastodon", + "avatar": "https://files.mastodon.social/accounts/avatars/000/013/179/original/b4ceb19c9c54ec7e.png", + "avatar_static": "https://files.mastodon.social/accounts/avatars/000/013/179/original/b4ceb19c9c54ec7e.png", + "header": "https://files.mastodon.social/accounts/headers/000/013/179/original/1375be116fbe0f1d.png", + "header_static": "https://files.mastodon.social/accounts/headers/000/013/179/original/1375be116fbe0f1d.png", + "followers_count": 846724, "following_count": 35, "statuses_count": 360, "last_status_at": + "2025-08-07", "hide_collections": false, "noindex": false, "emojis": [], "roles": + [], "fields": [{"name": "Homepage", "value": "https://joinmastodon.org", + "verified_at": "2018-10-31T04:11:00.076+00:00"}, {"name": "Patreon", "value": + "https://patreon.com/mastodon", + "verified_at": null}, {"name": "GitHub", "value": "https://github.com/mastodon", + "verified_at": "2023-07-21T13:27:45.996+00:00"}]}}, "rules": [{"id": "1", + "text": "Sexually explicit or violent media must be marked as sensitive or + with a content warning", "hint": "This includes content that is particularly + provocative even if it may not show specific body parts, as well as dead bodies, + bloody injuries, and other gore. Particularly obscene content may be prohibited + entirely. Profile pictures and header images may not contain sexually explicit + or violent media.", "translations": {"de": {"text": "Sexuell explizite Darstellungen + oder solche von Gewalt m\u00fcssen mit einer Inhaltswarnung versehen werden.", + "hint": "Das beinhaltet ausdr\u00fccklich provokative Inhalte, auch wenn keine + bestimmten K\u00f6rperteile zu sehen sind, sowie Leichname, blutige Verletzungen + und vergleichbare extreme Darstellungen. Besonders obsz\u00f6ne Inhalte k\u00f6nnen + vollst\u00e4ndig verboten werden. Profil- und Titelbilder d\u00fcrfen keine + sexuell expliziten oder Gewaltdarstellungen abbilden."}, "es": {"text": "El + contenido sexual expl\u00edcito o violento debe marcarse como sensible o con + una advertencia de contenido.", "hint": "Esto incluye contenido especialmente + provocativo, aunque no muestre partes espec\u00edficas del cuerpo, as\u00ed + como cad\u00e1veres, heridas sangrientas y otras escenas sangrientas. Los + contenidos especialmente obscenos pueden prohibirse por completo. Las fotos + de perfil y las im\u00e1genes de cabecera no pueden contener contenido sexual + expl\u00edcito o violento."}, "fr": {"text": "Le contenu \u00e9rotique, pornographique + ou violent doit \u00eatre marqu\u00e9 comme sensible ou avoir un avertissement + de contenu.", "hint": "Cela inclut le contenu particuli\u00e8rement provocateur + m\u00eame s\u2019il ne montre pas particuli\u00e8rement de parties intimes, + ainsi que les photos de cadavres, de blessures sanglantes et autres sc\u00e8nes + d\u00e9rangeantes. Le contenu particuli\u00e8rement obsc\u00e8ne peut \u00eatre + compl\u00e8tement interdit. Les images de profil et d\u2019en-t\u00eate ne + doivent pas contenir de contenu sexuellement explicite ou violent."}, "nl": + {"text": "Seksueel expliciet of gewelddadig beeldmateriaal moet als \u2018gevoelig\u2019 + gemarkeerd worden, of met een inhoudswaarschuwing gemarkeerd.", "hint": "Dit + omvat ook inhoud die gedeeltelijk aanstootgevend is zelfs als het geen lichaamsdelen + toont, en ook dode lichamen, bloederige verwondingen en andere gruwelijkheden. + Zeer obscene inhoud kan helemaal verboden worden. Profielfoto\u2019s en headerafbeeldingen + mogen geen seksueel expliciete of geweldadige inhoud hebben."}, "ru": {"text": + "\u0421\u0435\u043a\u0441\u0443\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u044b\u0435 + \u0438\u043b\u0438 \u0436\u0435\u0441\u0442\u043e\u043a\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f + \u0438\u043b\u0438 \u0432\u0438\u0434\u0435\u043e \u0434\u043e\u043b\u0436\u043d\u044b + \u0431\u044b\u0442\u044c \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b + \u043a\u0430\u043a \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 + \u0438\u043b\u0438 \u0441\u043a\u0440\u044b\u0442\u044b \u043f\u043e\u0434 + \u0441\u043f\u043e\u0439\u043b\u0435\u0440.", "hint": "\u042d\u0442\u043e + \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f + \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0432\u043e\u0446\u0438\u0440\u0443\u044e\u0449\u0438\u0439 + \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 + \u043e\u043d \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 + \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 + \u0442\u0435\u043b\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043c\u0451\u0440\u0442\u0432\u044b\u0435 + \u0442\u0435\u043b\u0430, \u043e\u043a\u0440\u043e\u0432\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 + \u0440\u0430\u043d\u044b \u0438 \u043f\u0440\u043e\u0447\u0443\u044e \u043a\u0440\u043e\u0432\u044c. + \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0436\u0435\u0441\u0442\u043e\u043a\u0438\u0439 + \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 + \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d + \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e. \u0410\u0432\u0430\u0442\u0430\u0440\u044b + \u0438 \u043e\u0431\u043b\u043e\u0436\u043a\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439 + \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c + \u0441\u0435\u043a\u0441\u0443\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u044b\u0435 + \u0438\u043b\u0438 \u0436\u0435\u0441\u0442\u043e\u043a\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f."}, + "zh-CN": {"text": "\u8272\u60c5\u6216\u66b4\u529b\u5a92\u4f53\u5fc5\u987b\u6807\u8bb0\u4e3a\u654f\u611f\u6216\u6709\u5185\u5bb9\u8b66\u544a", + "hint": "\u8fd9\u5305\u62ec\u7279\u522b\u6311\u9017\u6027\u7684\u5185\u5bb9\uff0c\u5373\u4f7f\u5b83\u53ef\u80fd\u6ca1\u6709\u663e\u793a\u7279\u5b9a\u7684\u8eab\u4f53\u90e8\u4f4d\uff0c\u4ee5\u53ca\u5c38\u4f53\u3001\u8840\u8165\u4f24\u5bb3\u548c\u5176\u4ed6\u8840\u8165\u5185\u5bb9\u3002\u7279\u522b\u6deb\u79fd\u7684\u5185\u5bb9\u53ef\u80fd\u4f1a\u88ab\u5b8c\u5168\u7981\u6b62\u3002\u4e2a\u4eba\u8d44\u6599\u56fe\u7247\u548c\u5934\u50cf\u4e0d\u5f97\u5305\u542b\u8272\u60c5\u6216\u66b4\u529b\u5185\u5bb9\u3002"}, + "zh-TW": {"text": "\u6027\u6697\u793a\u6216\u66b4\u529b\u5a92\u9ad4\u5fc5\u9808\u6a19\u793a\u70ba\u654f\u611f\u6216\u9644\u5e36\u5167\u5bb9\u8b66\u793a", + "hint": "\u9019\u5305\u62ec\u7279\u5225\u6311\u91c1\u7684\u5167\u5bb9\uff0c\u5373\u4f7f\u5b83\u53ef\u80fd\u6c92\u6709\u986f\u793a\u7279\u5b9a\u7684\u8eab\u9ad4\u90e8\u4f4d\uff0c\u4ee5\u53ca\u5c4d\u9ad4\u3001\u8840\u8165\u50b7\u5bb3\u548c\u5176\u4ed6\u8840\u8165\u5167\u5bb9\u3002\u7279\u5225\u7325\u893b\u7684\u5167\u5bb9\u53ef\u80fd\u6703\u88ab\u5b8c\u5168\u7981\u6b62\u3002\u500b\u4eba\u6a94\u6848\u5716\u7247\u548c\u6a19\u984c\u5716\u7247\u4e0d\u5f97\u5305\u542b\u8272\u60c5\u6216\u66b4\u529b\u5a92\u9ad4\u3002"}}}, + {"id": "2", "text": "No racism, sexism, homophobia, transphobia, ableism, + xenophobia, or casteism.", "hint": "Transphobic behavior such as intentional + misgendering and deadnaming is strictly prohibited. Promotion of \"conversion + therapy\" is strictly prohibited. Criticism of governments and religions is + permissible unless being used as a proxy for discrimination.", "translations": + {"de": {"text": "Kein(e) Rassismus, Sexismus, Homophobie, Transphobie, Behindertenfeindlichkeit, + Fremdenfeindlichkeit oder Kasteismus.", "hint": "Transphobes Verhalten wie + die absichtliche Verwendung von falschen Anreden und Pronomen sowie Deadnaming + ist strengstens verboten. Die Werbung f\u00fcr Konversionstherapien ist strengstens + verboten. Die Kritik an Regierungen und Religionen ist zul\u00e4ssig, sofern + sie nicht stellvertretend f\u00fcr Diskriminierung verwendet wird."}, "es": + {"text": "Prohibido el racismo, sexismo, homofobia, transfobia, able\u00edsmo, + xenofobia o casticismo.", "hint": "Queda terminantemente prohibido el comportamiento + transf\u00f3bico, como el uso intencionado de nombres falsos o el \"deadnaming\". + La promoci\u00f3n de la \"terapia de conversi\u00f3n\" est\u00e1 estrictamente + prohibida. Se permiten las cr\u00edticas a gobiernos y religiones, a menos + que se utilicen como excusa para la discriminaci\u00f3n."}, "fr": {"text": + "Pas de racisme, sexisme, homophobie, transphobie, validisme, x\u00e9nophobie + ou discrimination de caste.", "hint": "Les comportements intentionnellement + transphobes, comme le m\u00e9genrage ou le morinommage (\u201cdeadnaming\u201d) + est strictement interdit. La promotion des \u201cth\u00e9rapies de conversion\u201d + est strictement interdite. La critique des gouvernements et religions est + autoris\u00e9e, sauf dans les cas ou elle est utilis\u00e9e comme paravent + pour de la discrimination."}, "nl": {"text": "Geen racisme, seksisme, homofobie, + transfobie, validisme, xenofobie of kastendiscriminatie.", "hint": "Transfobisch + gedrag zoals opzettelijk misgenderen en deadnaming is ten strengste verboden. + Het promoten van \u201cconversie therapie\u201d is ten strengste verboden. + Kritiek op overheden en religies is toegestaan tenzij het wordt gebruikt als + proxy voor racisme."}, "ru": {"text": "\u0417\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442\u0441\u044f + \u0440\u0430\u0441\u0438\u0437\u043c, \u0441\u0435\u043a\u0441\u0438\u0437\u043c, + \u0433\u043e\u043c\u043e\u0444\u043e\u0431\u0438\u044f, \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0431\u0438\u044f, + \u044d\u0439\u0431\u043b\u0438\u0437\u043c, \u043a\u0441\u0435\u043d\u043e\u0444\u043e\u0431\u0438\u044f + \u0438 \u043a\u0430\u0441\u0442\u043e\u0432\u043e\u0441\u0442\u044c.", "hint": + "\u0422\u0440\u0430\u043d\u0441\u0444\u043e\u0431\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, + \u0442\u0430\u043a\u043e\u0435 \u043a\u0430\u043a \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u044b\u0439 + \u043c\u0438\u0441\u0433\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u0438 + \u0434\u0435\u0434\u043d\u0435\u0439\u043c\u0438\u043d\u0433, \u0441\u0442\u0440\u043e\u0433\u043e + \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e. \u041f\u0440\u043e\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 + \"\u043a\u043e\u043d\u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0439 + \u0442\u0435\u0440\u0430\u043f\u0438\u0438\" \u0441\u0442\u0440\u043e\u0433\u043e + \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e. \u041a\u0440\u0438\u0442\u0438\u043a\u0430 + \u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u0438 + \u0440\u0435\u043b\u0438\u0433\u0438\u0439 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0430, + \u043a\u0440\u043e\u043c\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, + \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f + \u043a\u0430\u043a \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d\u0438\u0435 + \u0434\u043b\u044f \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0446\u0438\u0438."}, + "zh-CN": {"text": "\u7981\u6b62\u79cd\u65cf\u4e3b\u4e49\u3001\u6027\u522b\u6b67\u89c6\u3001\u4ec7\u89c6\u540c\u6027\u604b\u3001\u4ec7\u89c6\u53d8\u6027\u8005\u3001\u5f02\u80fd\u8005\u3001\u4ec7\u5916\u5fc3\u7406\u6216\u79cd\u59d3\u6b67\u89c6\u3002", + "hint": "\u4e25\u7981\u53d8\u6027\u4ec7\u89c6\u884c\u4e3a\uff0c\u5982\u6545\u610f\u8bef\u7528\u6027\u522b\u548c\u6b7b\u540d\u3002\u4e25\u7981\u5ba3\u4f20 + \u201c\u8f6c\u6362\u7597\u6cd5\u201d\u3002\u5141\u8bb8\u6279\u8bc4\u653f\u5e9c\u548c\u5b97\u6559\uff0c\u9664\u975e\u88ab\u7528\u4f5c\u6b67\u89c6\u7684\u4ee3\u540d\u8bcd\u3002"}, + "zh-TW": {"text": "\u7981\u6b62\u7a2e\u65cf\u4e3b\u7fa9\u3001\u6027\u5225\u4e3b\u7fa9\u3001\u6050\u540c\u4e3b\u7fa9\u3001\u6050\u8b8a\u6027\u4e3b\u7fa9\u3001\u80fd\u529b\u4e3b\u7fa9\u3001\u4ec7\u5916\u4e3b\u7fa9\u6216\u7a2e\u6027\u4e3b\u7fa9\u3002", + "hint": "\u56b4\u7981\u8b8a\u6027\u4ec7\u8996\u884c\u70ba\uff0c\u4f8b\u5982\u6545\u610f\u8aa4\u7528\u6027\u5225\u548c\u66b1\u7a31\u3002\u56b4\u7981\u5ba3\u50b3\u300c\u626d\u8f49\u6cbb\u7642\u300d\u3002\u5141\u8a31\u6279\u8a55\u653f\u5e9c\u548c\u5b97\u6559\uff0c\u9664\u975e\u88ab\u7528\u4f86\u4ee3\u8868\u6b67\u8996\u3002"}}}, + {"id": "3", "text": "No incitement of violence or promotion of violent ideologies", + "hint": "Calling for people or groups to be assassinated, murdered, or attacked + physically is strictly prohibited. Support for violent groups or events is + prohibited.", "translations": {"de": {"text": "Keine Anstiftung zu Gewalt + oder F\u00f6rderung gewaltt\u00e4tiger Ideologien.", "hint": "Der Aufruf zum + Mord oder k\u00f6rperlichen Attacken auf Personen oder Gruppen ist strengstens + verboten. Die Unterst\u00fctzung gewaltt\u00e4tiger Gruppen oder Veranstaltungen + ist verboten."}, "es": {"text": "Prohibida la incitaci\u00f3n a la violencia + o la promoci\u00f3n de ideolog\u00edas violentas.", "hint": "Est\u00e1 estrictamente + prohibido hacer llamamientos para que se asesine, mate o agreda f\u00edsicamente + a personas o grupos. Est\u00e1 prohibido apoyar a grupos o acontecimientos + violentos."}, "fr": {"text": "Pas d\u2019incitation \u00e0 la violence ou + de promotion d\u2019id\u00e9ologies violentes.", "hint": "L\u2019appel au + meutre, \u00e0 la violence ou \u00e0 l\u2019action physique envers des personnes + ou des groupes de personnes est strictement interdit. Le soutien \u00e0 des + groupes ou \u00e9v\u00e8nements violents est interdit."}, "nl": {"text": "Niet + aanzetten tot geweld of verspreiden van gewelddadige ideologie\u00ebn.", "hint": + "Mensen of groepen aanzetten tot moord, aanslagen of fysieke aanvallen is + ten strengste verboden. Steun voor gewelddadige groeperingen of evenementen + is verboden."}, "ru": {"text": "\u0417\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442\u0441\u044f + \u043f\u043e\u0434\u0441\u0442\u0440\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e + \u043a \u0436\u0435\u0441\u0442\u043e\u043a\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 + \u043f\u0440\u043e\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0436\u0435\u0441\u0442\u043e\u043a\u0438\u0445 + \u0438\u0434\u0435\u043e\u043b\u043e\u0433\u0438\u0439.", "hint": "\u041f\u0440\u0438\u0437\u044b\u0432\u044b + \u043a \u043f\u043e\u043a\u0443\u0448\u0435\u043d\u0438\u044f\u043c, \u0443\u0431\u0438\u0439\u0441\u0442\u0432\u0430\u043c + \u0438 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0430\u0442\u0430\u043a\u0430\u043c + \u043d\u0430 \u043b\u044e\u0434\u0435\u0439 \u0438\u043b\u0438 \u0433\u0440\u0443\u043f\u043f\u044b + \u043b\u044e\u0434\u0435\u0439 \u0441\u0442\u0440\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u044b. + \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0436\u0435\u0441\u0442\u043e\u043a\u0438\u0445 + \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432 \u0438\u043b\u0438 + \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u0430."}, + "zh-CN": {"text": "\u4e0d\u5f97\u717d\u52a8\u66b4\u529b\u6216\u5ba3\u626c\u66b4\u529b\u610f\u8bc6\u5f62\u6001", + "hint": "\u4e25\u7981\u547c\u5401\u6697\u6740\u3001\u8c0b\u6740\u6216\u4eba\u8eab\u653b\u51fb\u4ed6\u4eba\u6216\u56e2\u4f53\u3002\u7981\u6b62\u652f\u6301\u66b4\u529b\u56e2\u4f53\u6216\u4e8b\u4ef6\u3002"}, + "zh-TW": {"text": "\u56b4\u7981\u717d\u52d5\u66b4\u529b\u6216\u5ba3\u63da\u66b4\u529b\u610f\u8b58\u5f62\u614b", + "hint": "\u56b4\u7981\u547c\u7c72\u6697\u6bba\u3001\u8b00\u6bba\u6216\u4eba\u8eab\u653b\u64ca\u4ed6\u4eba\u6216\u5718\u9ad4\u3002\u56b4\u7981\u652f\u6301\u66b4\u529b\u5718\u9ad4\u6216\u4e8b\u4ef6\u3002"}}}, + {"id": "4", "text": "No harassment, block evasion, dogpiling, or doxxing of + others", "hint": "Repeat attempts to communicate with users who have blocked + you or creation of accounts solely to harass or insult individuals is strictly + prohibited. Coordinated activity to attack other users is prohibited. Posting + of private personal information about others is prohibited.", "translations": + {"de": {"text": "Keine Bel\u00e4stigungen, Umgehung von Blockierungen, Dogpiling + oder Doxxing.", "hint": "Wiederholte Kommunikationsversuche mit Profilen, + die dich blockiert haben, oder die Erstellung neuer Konten, die ausschlie\u00dflich + dazu dienen, andere zu bel\u00e4stigen oder zu beleidigen, sind strengstens + verboten. Koordinierte Angriffe auf andere Profile sind verboten. Die Ver\u00f6ffentlichung + von privaten und pers\u00f6nlichen Informationen anderer ist verboten."}, + "es": {"text": "No acosar, evadir bloqueos, \"dogpiling\" (abuso en l\u00ednea + por grupos de acosadores) o doxeo de otros.", "hint": "Est\u00e1 estrictamente + prohibido intentar comunicarse repetidamente con usuarios que te hayan bloqueado + o crear cuentas con el \u00fanico fin de acosar o insultar a otras personas. + Queda prohibida la actividad coordinada para atacar a otros usuarios. Est\u00e1 + prohibido publicar informaci\u00f3n personal privada sobre otras personas."}, + "fr": {"text": "Pas de harc\u00e8lement, d\u2019esquive de blocage, de \u201cdogpiling\u201d, + ou de divulgation de donn\u00e9es personnelles d\u2019autrui.", "hint": "Les + tentatives r\u00e9p\u00e9t\u00e9es de communiquer avec des utilisateur\u00b7ices + qui vont ont bloqu\u00e9 ainsi que la cr\u00e9ation de comptes pour harceler + ou insulter autrui sont strictement interdites. Les attaques coordonn\u00e9es + contre autrui sont interdites. La publication de donn\u00e9es personnelles + d\u2019autrui est interdite."}, "nl": {"text": "Geen intimidatie, omzeilen + van blokkades, groepsaanvallen of het verspreiden van priv\u00e9gegevens van + anderen.", "hint": "Herhaalde pogingen tot communiceren met gebruikers die + je hebben geblokkeerd, of het maken van accounts enkel om personen te intimideren + of beledigen is ten strengste verboden. Geco\u00f6rdineerde activiteit om + andere gebruikers aan te vallen is verboden. Het plaatsen van priv\u00e9-gegevens + van anderen is verboden."}, "ru": {"text": "\u0417\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442\u0441\u044f + \u0442\u0440\u0430\u0432\u043b\u044f, \u0438\u0437\u0431\u0435\u0433\u0430\u043d\u0438\u0435 + \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a, \u043d\u0430\u0431\u0435\u0433\u0438 + \u0438 \u0440\u0430\u0437\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 + \u043b\u0438\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 + \u0434\u0440\u0443\u0433\u0438\u0445 \u043b\u0438\u0446.", "hint": "\u041f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0435\u0441\u044f + \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c + \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438, + \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u0441 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043b\u0438, + \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0443\u0447\u0451\u0442\u043d\u044b\u0445 + \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e + \u0440\u0430\u0434\u0438 \u0442\u0440\u0430\u0432\u043b\u0438 \u0438\u043b\u0438 + \u043e\u0441\u043a\u043e\u0440\u0431\u043b\u0435\u043d\u0438\u0439, \u0441\u0442\u0440\u043e\u0433\u043e + \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u044b. \u0421\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f + \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0441 \u0446\u0435\u043b\u044c\u044e + \u0430\u0442\u0430\u043a\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 + \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 + \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u0430. \u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f + \u043b\u0438\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 + \u0434\u0440\u0443\u0433\u0438\u0445 \u043b\u0438\u0446 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u0430."}, + "zh-CN": {"text": "\u4e0d\u5f97\u9a9a\u6270\u3001\u56de\u907f\u5c01\u7981\u3001\u8bfd\u8c24\u6216\u653b\u51fb\u4ed6\u4eba", + "hint": "\u4e25\u7981\u91cd\u590d\u5c1d\u8bd5\u4e0e\u5df2\u5c01\u7981\u60a8\u7684\u7528\u6237\u4ea4\u6d41\uff0c\u6216\u4ec5\u4e3a\u9a9a\u6270\u6216\u4fae\u8fb1\u4ed6\u4eba\u800c\u521b\u5efa\u8d26\u6237\u3002\u4e25\u7981\u534f\u540c\u653b\u51fb\u5176\u4ed6\u7528\u6237\u3002\u7981\u6b62\u53d1\u5e03\u4ed6\u4eba\u7684\u79c1\u4eba\u4e2a\u4eba\u4fe1\u606f\u3002"}, + "zh-TW": {"text": "\u56b4\u7981\u9a37\u64fe\u3001\u8ff4\u907f\u5c01\u9396\u3001\u717d\u52d5\u6216\u8aa3\u884a\u4ed6\u4eba", + "hint": "\u56b4\u7981\u91cd\u8907\u5617\u8a66\u8207\u5df2\u5c01\u9396\u60a8\u7684\u4f7f\u7528\u8005\u6e9d\u901a\uff0c\u6216\u7d14\u7cb9\u70ba\u4e86\u9a37\u64fe\u6216\u4fae\u8fb1\u4ed6\u4eba\u800c\u5efa\u7acb\u5e33\u865f\u3002\u7981\u6b62\u653b\u64ca\u5176\u4ed6\u4f7f\u7528\u8005\u7684\u5354\u8abf\u6d3b\u52d5\u3002\u7981\u6b62\u5f35\u8cbc\u4ed6\u4eba\u7684\u79c1\u4eba\u500b\u4eba\u8cc7\u8a0a\u3002"}}}, + {"id": "7", "text": "Do not share information widely-known to be false and + misleading", "hint": "False and misleading information and links from low-quality + sources may not be posted, especially if they are likely to mislead or confuse + others or endanger their safety.", "translations": {"de": {"text": "Verbreitet + keine Informationen, von denen allgemein bekannt ist, dass sie falsch oder + irref\u00fchrend.", "hint": "Falsche und irref\u00fchrende Informationen sowie + Links aus unseri\u00f6sen Quellen d\u00fcrfen nicht gepostet werden, insbesondere + wenn sie geeignet sind, andere in die Irre zu f\u00fchren oder deren Sicherheit + zu gef\u00e4hrden."}, "es": {"text": "No compartas informaci\u00f3n ampliamente + conocida por ser falsa y enga\u00f1osa.", "hint": "No est\u00e1 permitido + publicar informaci\u00f3n falsa y enga\u00f1osa ni enlaces de fuentes de baja + calidad, especialmente si pueden inducir a error o confusi\u00f3n a otras + personas o poner en peligro su seguridad."}, "fr": {"text": "Ne partagez pas + d\u2019informations connues pour \u00eatre fausses ou trompeuses.", "hint": + "Les informations fausses ou trompeuses, ainsi que les liens vers des sources + de mauvaise qualit\u00e9 ne doivent pas \u00eatre publi\u00e9es, particuli\u00e8rement + si elles risquent de tromper, d\u2019induire en erreur, de semer la confusion + ou de mettre des personnes en danger."}, "nl": {"text": "Deel geen informatie + die algemeen bekend staat als onjuist en misleidend.", "hint": "Onjuiste en + misleidende informatie en links naar onbetrouwbare bronnen mogen niet geplaatst + worden, zeker als deze waarschijnlijk anderen misleiden of verwarren, of hun + veiligheid in gevaar brengt."}, "ru": {"text": "\u041d\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0439\u0442\u0435 + \u0437\u0430\u0432\u0435\u0434\u043e\u043c\u043e \u043b\u043e\u0436\u043d\u0443\u044e + \u0438 \u0432\u0432\u043e\u0434\u044f\u0449\u0443\u044e \u0432 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0435 + \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e.", "hint": "\u0417\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u0430 + \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043b\u043e\u0436\u043d\u043e\u0439 + \u0438 \u0432\u0432\u043e\u0434\u044f\u0449\u0435\u0439 \u0432 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0435 + \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 \u0441\u0441\u044b\u043b\u043e\u043a + \u0438\u0437 \u043d\u0438\u0437\u043a\u043e\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 + \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e + \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 + \u0441\u0431\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0445 \u043b\u044e\u0434\u0435\u0439 + \u0441 \u0442\u043e\u043b\u043a\u0443, \u0437\u0430\u043f\u0443\u0442\u0430\u0442\u044c + \u0438\u0445, \u0438\u043b\u0438 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044c + \u0438\u0445 \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438."}, "zh-CN": + {"text": "\u4e0d\u5f97\u5206\u4eab\u4f17\u6240\u5468\u77e5\u7684\u865a\u5047\u548c\u8bef\u5bfc\u6027\u4fe1\u606f\r\n", + "hint": "\u4e0d\u5f97\u53d1\u5e03\u865a\u5047\u548c\u8bef\u5bfc\u6027\u4fe1\u606f\u4ee5\u53ca\u6765\u81ea\u4f4e\u8d28\u91cf\u6765\u6e90\u7684\u94fe\u63a5\uff0c\u5c24\u5176\u662f\u53ef\u80fd\u8bef\u5bfc\u6216\u6df7\u6dc6\u4ed6\u4eba\u6216\u5371\u53ca\u4ed6\u4eba\u5b89\u5168\u7684\u4fe1\u606f\u3002"}, + "zh-TW": {"text": "\u8acb\u52ff\u5206\u4eab\u5ee3\u70ba\u4eba\u77e5\u7684\u865b\u5047\u548c\u8aa4\u5c0e\u8cc7\u8a0a", + "hint": "\u4e0d\u5f97\u5f35\u8cbc\u865b\u5047\u548c\u8aa4\u5c0e\u8cc7\u8a0a\u4ee5\u53ca\u4f86\u81ea\u4f4e\u54c1\u8cea\u4f86\u6e90\u7684\u9023\u7d50\uff0c\u5c24\u5176\u662f\u53ef\u80fd\u8aa4\u5c0e\u6216\u6df7\u6dc6\u4ed6\u4eba\u6216\u5371\u5bb3\u4ed6\u4eba\u5b89\u5168\u7684\u8cc7\u8a0a\u3002"}}}, + {"id": "1008", "text": "Content created by others must be attributed, and + use of generative AI must be disclosed", "hint": "Content created by others + must clearly provide a reference to the author, creator, or source. For adult + content, this should include performers. Accounts may not solely post AI-generated + content.", "translations": {"de": {"text": "Von anderen erstellte Inhalte + m\u00fcssen gekennzeichnet und die Nutzung generativer KI offengelegt werden.", + "hint": "Von anderen erstellte Inhalte m\u00fcssen durch einen eindeutigen + Verweis auf den/die Autor*in oder die Quelle gekennzeichnet werden. Bei nicht + jugendfreien Inhalten sollte dies auch die Darsteller*innen einschlie\u00dfen. + Konten d\u00fcrfen nicht ausschlie\u00dflich KI-generierte Inhalte posten."}, + "es": {"text": "Los contenidos creados por terceros deben ser atribuidos y + el uso de IA debe ser revelado.", "hint": "Los contenidos creados por terceros + deben proporcionar claramente una referencia al autor, creador o fuente. En + el caso de los contenidos para adultos, debe incluirse a los artistas. Las + cuentas no pueden publicar \u00fanicamente contenidos generados por IA."}, + "fr": {"text": "Le contenu cr\u00e9e par autrui doit \u00eatre attribu\u00e9, + et l\u2019utilisation d\u2019IA g\u00e9n\u00e9rative doit \u00eatre marqu\u00e9 + comme tel.", "hint": "Le contenu cr\u00e9\u00e9 par autrui doit fournir une + r\u00e9f\u00e9rence explicite \u00e0 son auteur\u00b7ice, cr\u00e9ateur\u00b7ice + ou sa source. Cela inclut les acteur\u00b7ice de contenu pour adulte. Les + comptes publiant exclusivement du contenu g\u00e9n\u00e9r\u00e9 par IA sont + interdits."}, "nl": {"text": "Inhoud gemaakt door anderen moet worden toegeschreven, + en het gebruik van generatieve AI moet worden aangegeven.", "hint": "Inhoud + gemaakt door anderen moet een duidelijke referentie naar de auteur, maker + of bron bevatten. Voor Content created by others must clearly provide a reference + to the author, creator, or source. Voor inhoud voor volwassenen, moet het + model worden vermeld. Accounts mogen niet uitsluitend door AI gegenereerde + inhoud plaatsen."}, "ru": {"text": "\u041a\u043e\u043d\u0442\u0435\u043d\u0442, + \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0434\u0440\u0443\u0433\u0438\u043c\u0438, + \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c\u0441\u044f + \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0430\u0432\u0442\u043e\u0440\u0441\u0442\u0432\u0430, + \u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 + \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e + \u0418\u0418 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c + \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u043e.", "hint": "\u041a\u043e\u043d\u0442\u0435\u043d\u0442, + \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0434\u0440\u0443\u0433\u0438\u043c\u0438, + \u0434\u043e\u043b\u0436\u0435\u043d \u044f\u0432\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c + \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f + \u043e\u0442\u0441\u044b\u043b\u043a\u043e\u0439 \u043a \u0430\u0432\u0442\u043e\u0440\u0443, + \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044e \u0438\u043b\u0438 + \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0443. \u0414\u043b\u044f + \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0445 + \u044d\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 + \u0441\u0435\u0431\u044f \u0430\u043a\u0442\u0451\u0440\u043e\u0432. \u0423\u0447\u0451\u0442\u043d\u044b\u0435 + \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 + \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e + \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 + \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0418\u0418."}, "zh-CN": + {"text": "\u4ed6\u4eba\u521b\u5efa\u7684\u5185\u5bb9\u5fc5\u987b\u6ce8\u660e\u51fa\u5904\uff0c\u4f7f\u7528\u4eba\u5de5\u667a\u80fd\u4ea7\u751f\u7684\u5185\u5bb9\u5fc5\u987b\u516c\u5f00\u548c\u62ab\u9732\u8bf4\u660e", + "hint": "\u4ed6\u4eba\u521b\u5efa\u7684\u5185\u5bb9\u5fc5\u987b\u660e\u786e\u6ce8\u660e\u4f5c\u8005\u3001\u521b\u5efa\u8005\u6216\u6765\u6e90\u3002\u5bf9\u4e8e\u6210\u4eba\u5185\u5bb9\uff0c\u5e94\u5305\u62ec\u8868\u6f14\u8005\u3002\u8d26\u6237\u4e0d\u5f97\u4ec5\u53d1\u5e03\u4eba\u5de5\u667a\u80fd\u751f\u6210\u7684\u5185\u5bb9\u3002"}, + "zh-TW": {"text": "\u7531\u4ed6\u4eba\u5275\u4f5c\u7684\u5167\u5bb9\u5fc5\u9808\u8a3b\u660e\u4f86\u6e90\uff0c\u4f7f\u7528\u4eba\u5de5\u667a\u80fd\u7522\u751f\u7684\u5167\u5bb9\u5fc5\u9808\u516c\u958b\u548c\u62ab\u9732\u8aaa\u660e", + "hint": "\u4ed6\u4eba\u5275\u4f5c\u7684\u5167\u5bb9\u5fc5\u9808\u6e05\u695a\u63d0\u4f9b\u4f5c\u8005\u3001\u5275\u4f5c\u4eba\u6216\u4f86\u6e90\u7684\u53c3\u7167\u3002\u5c0d\u65bc\u6210\u4eba\u5167\u5bb9\uff0c\u9019\u61c9\u8a72\u5305\u62ec\u8868\u6f14\u8005\u3002\u5e33\u6236\u4e0d\u5f97\u50c5\u767c\u4f48\u4eba\u5de5\u667a\u80fd\u7522\u751f\u7684\u5167\u5bb9\u3002"}}}]}' + headers: + Accept-Ranges: + - bytes + Age: + - '46' + Connection: + - keep-alive + Date: + - Sun, 17 Aug 2025 14:16:14 GMT + Strict-Transport-Security: + - max-age=31557600 + Vary: + - Accept, Origin, Accept-Encoding + X-Cache: + - MISS, HIT, HIT + X-Cache-Hits: + - 0, 2, 0 + X-Served-By: + - cache-fra-etou8220030-FRA, cache-fra-etou8220030-FRA, cache-hel1410022-HEL + X-Timer: + - S1755440174.055018,VS0,VE34 + alt-svc: + - h3=":443";ma=86400,h3-29=":443";ma=86400,h3-27=":443";ma=86400 + cache-control: + - max-age=300, public, stale-while-revalidate=30, stale-if-error=86400 + content-length: + - '23941' + content-security-policy: + - default-src 'none'; frame-ancestors 'none'; form-action 'none' + content-type: + - application/json; charset=utf-8 + etag: + - W/"aca3b441fa0ba4d884f0bfdc8488c348" + referrer-policy: + - same-origin + via: + - 1.1 varnish, 1.1 varnish, 1.1 varnish + x-content-type-options: + - nosniff + x-frame-options: + - DENY + x-ratelimit-limit: + - '300' + x-ratelimit-remaining: + - '297' + x-ratelimit-reset: + - '2025-08-17T13:55:00.593343Z' + x-request-id: + - a39dab07279179e4ef4982613648e814 + x-runtime: + - '0.014526' + x-xss-protection: + - '0' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, br + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - mastodonpy + method: GET + uri: https://mastodon.social/api/v2/instance/ + response: + body: + string: '{"domain": "mastodon.social", "title": "Mastodon", "version": "4.5.0-nightly.2025-08-06-security", + "source_url": "https://github.com/mastodon/mastodon", "description": "The + original server operated by the Mastodon gGmbH non-profit", "usage": {"users": + {"active_month": 271988}}, "thumbnail": {"url": "https://files.mastodon.social/site_uploads/files/000/000/001/@1x/57c12f441d083cde.png", + "blurhash": "UeKUpFxuo~R%0nW;WCnhF6RjaJt757oJodS$", "versions": {"@1x": "https://files.mastodon.social/site_uploads/files/000/000/001/@1x/57c12f441d083cde.png", + "@2x": "https://files.mastodon.social/site_uploads/files/000/000/001/@2x/57c12f441d083cde.png"}}, + "icon": [{"src": "https://mastodon.social/packs/assets/android-chrome-36x36-DLiBQg3N.png", + "size": "36x36"}, {"src": "https://mastodon.social/packs/assets/android-chrome-48x48-C7lKWFwX.png", + "size": "48x48"}, {"src": "https://mastodon.social/packs/assets/android-chrome-72x72-9LRpA3QN.png", + "size": "72x72"}, {"src": "https://mastodon.social/packs/assets/android-chrome-96x96-BKKwkkY-.png", + "size": "96x96"}, {"src": "https://mastodon.social/packs/assets/android-chrome-144x144-D-ewI-KZ.png", + "size": "144x144"}, {"src": "https://mastodon.social/packs/assets/android-chrome-192x192-jYKJbpas.png", + "size": "192x192"}, {"src": "https://mastodon.social/packs/assets/android-chrome-256x256-DXt2vsq7.png", + "size": "256x256"}, {"src": "https://mastodon.social/packs/assets/android-chrome-384x384-CbK7cG33.png", + "size": "384x384"}, {"src": "https://mastodon.social/packs/assets/android-chrome-512x512-Dz2ThkhV.png", + "size": "512x512"}], "languages": ["en"], "configuration": {"urls": {"streaming": + "wss://streaming.mastodon.social", "status": "https://status.mastodon.social", + "about": "https://mastodon.social/about", "privacy_policy": "https://mastodon.social/privacy-policy", + "terms_of_service": null}, "vapid": {"public_key": "BCk-QqERU0q-CfYZjcuB6lnyyOYfJ2AifKqfeGIm7Z-HiTU5T9eTG5GxVA0_OH5mMlI4UkkDTpaZwozy0TzdZ2M="}, + "accounts": {"max_featured_tags": 10, "max_pinned_statuses": 5}, "statuses": + {"max_characters": 500, "max_media_attachments": 4, "characters_reserved_per_url": + 23}, "media_attachments": {"description_limit": 1500, "image_matrix_limit": + 33177600, "image_size_limit": 16777216, "supported_mime_types": ["image/jpeg", + "image/png", "image/gif", "image/heic", "image/heif", "image/webp", "image/avif", + "video/webm", "video/mp4", "video/quicktime", "video/ogg", "audio/wave", "audio/wav", + "audio/x-wav", "audio/x-pn-wave", "audio/vnd.wave", "audio/ogg", "audio/vorbis", + "audio/mpeg", "audio/mp3", "audio/webm", "audio/flac", "audio/aac", "audio/m4a", + "audio/x-m4a", "audio/mp4", "audio/3gpp", "video/x-ms-asf"], "video_frame_rate_limit": + 120, "video_matrix_limit": 8294400, "video_size_limit": 103809024}, "polls": + {"max_options": 4, "max_characters_per_option": 50, "min_expiration": 300, + "max_expiration": 2629746}, "translation": {"enabled": true}, "limited_federation": + false}, "registrations": {"enabled": true, "approval_required": false, "reason_required": + false, "message": null, "min_age": 16, "url": null}, "api_versions": {"mastodon": + 6}, "contact": {"email": "staff@mastodon.social", "account": {"id": "13179", + "username": "Mastodon", "acct": "Mastodon", "display_name": "Mastodon", "locked": + false, "bot": false, "discoverable": true, "indexable": false, "group": false, + "created_at": "2016-11-23T00:00:00.000Z", "note": "

A free, open-source + decentralised social network to connect with your friends and others, anywhere.

", + "url": "https://mastodon.social/@Mastodon", "uri": "https://mastodon.social/users/Mastodon", + "avatar": "https://files.mastodon.social/accounts/avatars/000/013/179/original/b4ceb19c9c54ec7e.png", + "avatar_static": "https://files.mastodon.social/accounts/avatars/000/013/179/original/b4ceb19c9c54ec7e.png", + "header": "https://files.mastodon.social/accounts/headers/000/013/179/original/1375be116fbe0f1d.png", + "header_static": "https://files.mastodon.social/accounts/headers/000/013/179/original/1375be116fbe0f1d.png", + "followers_count": 846724, "following_count": 35, "statuses_count": 360, "last_status_at": + "2025-08-07", "hide_collections": false, "noindex": false, "emojis": [], "roles": + [], "fields": [{"name": "Homepage", "value": "https://joinmastodon.org", + "verified_at": "2018-10-31T04:11:00.076+00:00"}, {"name": "Patreon", "value": + "https://patreon.com/mastodon", + "verified_at": null}, {"name": "GitHub", "value": "https://github.com/mastodon", + "verified_at": "2023-07-21T13:27:45.996+00:00"}]}}, "rules": [{"id": "1", + "text": "Sexually explicit or violent media must be marked as sensitive or + with a content warning", "hint": "This includes content that is particularly + provocative even if it may not show specific body parts, as well as dead bodies, + bloody injuries, and other gore. Particularly obscene content may be prohibited + entirely. Profile pictures and header images may not contain sexually explicit + or violent media.", "translations": {"de": {"text": "Sexuell explizite Darstellungen + oder solche von Gewalt m\u00fcssen mit einer Inhaltswarnung versehen werden.", + "hint": "Das beinhaltet ausdr\u00fccklich provokative Inhalte, auch wenn keine + bestimmten K\u00f6rperteile zu sehen sind, sowie Leichname, blutige Verletzungen + und vergleichbare extreme Darstellungen. Besonders obsz\u00f6ne Inhalte k\u00f6nnen + vollst\u00e4ndig verboten werden. Profil- und Titelbilder d\u00fcrfen keine + sexuell expliziten oder Gewaltdarstellungen abbilden."}, "es": {"text": "El + contenido sexual expl\u00edcito o violento debe marcarse como sensible o con + una advertencia de contenido.", "hint": "Esto incluye contenido especialmente + provocativo, aunque no muestre partes espec\u00edficas del cuerpo, as\u00ed + como cad\u00e1veres, heridas sangrientas y otras escenas sangrientas. Los + contenidos especialmente obscenos pueden prohibirse por completo. Las fotos + de perfil y las im\u00e1genes de cabecera no pueden contener contenido sexual + expl\u00edcito o violento."}, "fr": {"text": "Le contenu \u00e9rotique, pornographique + ou violent doit \u00eatre marqu\u00e9 comme sensible ou avoir un avertissement + de contenu.", "hint": "Cela inclut le contenu particuli\u00e8rement provocateur + m\u00eame s\u2019il ne montre pas particuli\u00e8rement de parties intimes, + ainsi que les photos de cadavres, de blessures sanglantes et autres sc\u00e8nes + d\u00e9rangeantes. Le contenu particuli\u00e8rement obsc\u00e8ne peut \u00eatre + compl\u00e8tement interdit. Les images de profil et d\u2019en-t\u00eate ne + doivent pas contenir de contenu sexuellement explicite ou violent."}, "nl": + {"text": "Seksueel expliciet of gewelddadig beeldmateriaal moet als \u2018gevoelig\u2019 + gemarkeerd worden, of met een inhoudswaarschuwing gemarkeerd.", "hint": "Dit + omvat ook inhoud die gedeeltelijk aanstootgevend is zelfs als het geen lichaamsdelen + toont, en ook dode lichamen, bloederige verwondingen en andere gruwelijkheden. + Zeer obscene inhoud kan helemaal verboden worden. Profielfoto\u2019s en headerafbeeldingen + mogen geen seksueel expliciete of geweldadige inhoud hebben."}, "ru": {"text": + "\u0421\u0435\u043a\u0441\u0443\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u044b\u0435 + \u0438\u043b\u0438 \u0436\u0435\u0441\u0442\u043e\u043a\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f + \u0438\u043b\u0438 \u0432\u0438\u0434\u0435\u043e \u0434\u043e\u043b\u0436\u043d\u044b + \u0431\u044b\u0442\u044c \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b + \u043a\u0430\u043a \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 + \u0438\u043b\u0438 \u0441\u043a\u0440\u044b\u0442\u044b \u043f\u043e\u0434 + \u0441\u043f\u043e\u0439\u043b\u0435\u0440.", "hint": "\u042d\u0442\u043e + \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f + \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0432\u043e\u0446\u0438\u0440\u0443\u044e\u0449\u0438\u0439 + \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 + \u043e\u043d \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 + \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 + \u0442\u0435\u043b\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043c\u0451\u0440\u0442\u0432\u044b\u0435 + \u0442\u0435\u043b\u0430, \u043e\u043a\u0440\u043e\u0432\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 + \u0440\u0430\u043d\u044b \u0438 \u043f\u0440\u043e\u0447\u0443\u044e \u043a\u0440\u043e\u0432\u044c. + \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0436\u0435\u0441\u0442\u043e\u043a\u0438\u0439 + \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 + \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d + \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e. \u0410\u0432\u0430\u0442\u0430\u0440\u044b + \u0438 \u043e\u0431\u043b\u043e\u0436\u043a\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439 + \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c + \u0441\u0435\u043a\u0441\u0443\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u044b\u0435 + \u0438\u043b\u0438 \u0436\u0435\u0441\u0442\u043e\u043a\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f."}, + "zh-CN": {"text": "\u8272\u60c5\u6216\u66b4\u529b\u5a92\u4f53\u5fc5\u987b\u6807\u8bb0\u4e3a\u654f\u611f\u6216\u6709\u5185\u5bb9\u8b66\u544a", + "hint": "\u8fd9\u5305\u62ec\u7279\u522b\u6311\u9017\u6027\u7684\u5185\u5bb9\uff0c\u5373\u4f7f\u5b83\u53ef\u80fd\u6ca1\u6709\u663e\u793a\u7279\u5b9a\u7684\u8eab\u4f53\u90e8\u4f4d\uff0c\u4ee5\u53ca\u5c38\u4f53\u3001\u8840\u8165\u4f24\u5bb3\u548c\u5176\u4ed6\u8840\u8165\u5185\u5bb9\u3002\u7279\u522b\u6deb\u79fd\u7684\u5185\u5bb9\u53ef\u80fd\u4f1a\u88ab\u5b8c\u5168\u7981\u6b62\u3002\u4e2a\u4eba\u8d44\u6599\u56fe\u7247\u548c\u5934\u50cf\u4e0d\u5f97\u5305\u542b\u8272\u60c5\u6216\u66b4\u529b\u5185\u5bb9\u3002"}, + "zh-TW": {"text": "\u6027\u6697\u793a\u6216\u66b4\u529b\u5a92\u9ad4\u5fc5\u9808\u6a19\u793a\u70ba\u654f\u611f\u6216\u9644\u5e36\u5167\u5bb9\u8b66\u793a", + "hint": "\u9019\u5305\u62ec\u7279\u5225\u6311\u91c1\u7684\u5167\u5bb9\uff0c\u5373\u4f7f\u5b83\u53ef\u80fd\u6c92\u6709\u986f\u793a\u7279\u5b9a\u7684\u8eab\u9ad4\u90e8\u4f4d\uff0c\u4ee5\u53ca\u5c4d\u9ad4\u3001\u8840\u8165\u50b7\u5bb3\u548c\u5176\u4ed6\u8840\u8165\u5167\u5bb9\u3002\u7279\u5225\u7325\u893b\u7684\u5167\u5bb9\u53ef\u80fd\u6703\u88ab\u5b8c\u5168\u7981\u6b62\u3002\u500b\u4eba\u6a94\u6848\u5716\u7247\u548c\u6a19\u984c\u5716\u7247\u4e0d\u5f97\u5305\u542b\u8272\u60c5\u6216\u66b4\u529b\u5a92\u9ad4\u3002"}}}, + {"id": "2", "text": "No racism, sexism, homophobia, transphobia, ableism, + xenophobia, or casteism.", "hint": "Transphobic behavior such as intentional + misgendering and deadnaming is strictly prohibited. Promotion of \"conversion + therapy\" is strictly prohibited. Criticism of governments and religions is + permissible unless being used as a proxy for discrimination.", "translations": + {"de": {"text": "Kein(e) Rassismus, Sexismus, Homophobie, Transphobie, Behindertenfeindlichkeit, + Fremdenfeindlichkeit oder Kasteismus.", "hint": "Transphobes Verhalten wie + die absichtliche Verwendung von falschen Anreden und Pronomen sowie Deadnaming + ist strengstens verboten. Die Werbung f\u00fcr Konversionstherapien ist strengstens + verboten. Die Kritik an Regierungen und Religionen ist zul\u00e4ssig, sofern + sie nicht stellvertretend f\u00fcr Diskriminierung verwendet wird."}, "es": + {"text": "Prohibido el racismo, sexismo, homofobia, transfobia, able\u00edsmo, + xenofobia o casticismo.", "hint": "Queda terminantemente prohibido el comportamiento + transf\u00f3bico, como el uso intencionado de nombres falsos o el \"deadnaming\". + La promoci\u00f3n de la \"terapia de conversi\u00f3n\" est\u00e1 estrictamente + prohibida. Se permiten las cr\u00edticas a gobiernos y religiones, a menos + que se utilicen como excusa para la discriminaci\u00f3n."}, "fr": {"text": + "Pas de racisme, sexisme, homophobie, transphobie, validisme, x\u00e9nophobie + ou discrimination de caste.", "hint": "Les comportements intentionnellement + transphobes, comme le m\u00e9genrage ou le morinommage (\u201cdeadnaming\u201d) + est strictement interdit. La promotion des \u201cth\u00e9rapies de conversion\u201d + est strictement interdite. La critique des gouvernements et religions est + autoris\u00e9e, sauf dans les cas ou elle est utilis\u00e9e comme paravent + pour de la discrimination."}, "nl": {"text": "Geen racisme, seksisme, homofobie, + transfobie, validisme, xenofobie of kastendiscriminatie.", "hint": "Transfobisch + gedrag zoals opzettelijk misgenderen en deadnaming is ten strengste verboden. + Het promoten van \u201cconversie therapie\u201d is ten strengste verboden. + Kritiek op overheden en religies is toegestaan tenzij het wordt gebruikt als + proxy voor racisme."}, "ru": {"text": "\u0417\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442\u0441\u044f + \u0440\u0430\u0441\u0438\u0437\u043c, \u0441\u0435\u043a\u0441\u0438\u0437\u043c, + \u0433\u043e\u043c\u043e\u0444\u043e\u0431\u0438\u044f, \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0431\u0438\u044f, + \u044d\u0439\u0431\u043b\u0438\u0437\u043c, \u043a\u0441\u0435\u043d\u043e\u0444\u043e\u0431\u0438\u044f + \u0438 \u043a\u0430\u0441\u0442\u043e\u0432\u043e\u0441\u0442\u044c.", "hint": + "\u0422\u0440\u0430\u043d\u0441\u0444\u043e\u0431\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, + \u0442\u0430\u043a\u043e\u0435 \u043a\u0430\u043a \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u044b\u0439 + \u043c\u0438\u0441\u0433\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u0438 + \u0434\u0435\u0434\u043d\u0435\u0439\u043c\u0438\u043d\u0433, \u0441\u0442\u0440\u043e\u0433\u043e + \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e. \u041f\u0440\u043e\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 + \"\u043a\u043e\u043d\u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0439 + \u0442\u0435\u0440\u0430\u043f\u0438\u0438\" \u0441\u0442\u0440\u043e\u0433\u043e + \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e. \u041a\u0440\u0438\u0442\u0438\u043a\u0430 + \u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u0438 + \u0440\u0435\u043b\u0438\u0433\u0438\u0439 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0430, + \u043a\u0440\u043e\u043c\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, + \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f + \u043a\u0430\u043a \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d\u0438\u0435 + \u0434\u043b\u044f \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0446\u0438\u0438."}, + "zh-CN": {"text": "\u7981\u6b62\u79cd\u65cf\u4e3b\u4e49\u3001\u6027\u522b\u6b67\u89c6\u3001\u4ec7\u89c6\u540c\u6027\u604b\u3001\u4ec7\u89c6\u53d8\u6027\u8005\u3001\u5f02\u80fd\u8005\u3001\u4ec7\u5916\u5fc3\u7406\u6216\u79cd\u59d3\u6b67\u89c6\u3002", + "hint": "\u4e25\u7981\u53d8\u6027\u4ec7\u89c6\u884c\u4e3a\uff0c\u5982\u6545\u610f\u8bef\u7528\u6027\u522b\u548c\u6b7b\u540d\u3002\u4e25\u7981\u5ba3\u4f20 + \u201c\u8f6c\u6362\u7597\u6cd5\u201d\u3002\u5141\u8bb8\u6279\u8bc4\u653f\u5e9c\u548c\u5b97\u6559\uff0c\u9664\u975e\u88ab\u7528\u4f5c\u6b67\u89c6\u7684\u4ee3\u540d\u8bcd\u3002"}, + "zh-TW": {"text": "\u7981\u6b62\u7a2e\u65cf\u4e3b\u7fa9\u3001\u6027\u5225\u4e3b\u7fa9\u3001\u6050\u540c\u4e3b\u7fa9\u3001\u6050\u8b8a\u6027\u4e3b\u7fa9\u3001\u80fd\u529b\u4e3b\u7fa9\u3001\u4ec7\u5916\u4e3b\u7fa9\u6216\u7a2e\u6027\u4e3b\u7fa9\u3002", + "hint": "\u56b4\u7981\u8b8a\u6027\u4ec7\u8996\u884c\u70ba\uff0c\u4f8b\u5982\u6545\u610f\u8aa4\u7528\u6027\u5225\u548c\u66b1\u7a31\u3002\u56b4\u7981\u5ba3\u50b3\u300c\u626d\u8f49\u6cbb\u7642\u300d\u3002\u5141\u8a31\u6279\u8a55\u653f\u5e9c\u548c\u5b97\u6559\uff0c\u9664\u975e\u88ab\u7528\u4f86\u4ee3\u8868\u6b67\u8996\u3002"}}}, + {"id": "3", "text": "No incitement of violence or promotion of violent ideologies", + "hint": "Calling for people or groups to be assassinated, murdered, or attacked + physically is strictly prohibited. Support for violent groups or events is + prohibited.", "translations": {"de": {"text": "Keine Anstiftung zu Gewalt + oder F\u00f6rderung gewaltt\u00e4tiger Ideologien.", "hint": "Der Aufruf zum + Mord oder k\u00f6rperlichen Attacken auf Personen oder Gruppen ist strengstens + verboten. Die Unterst\u00fctzung gewaltt\u00e4tiger Gruppen oder Veranstaltungen + ist verboten."}, "es": {"text": "Prohibida la incitaci\u00f3n a la violencia + o la promoci\u00f3n de ideolog\u00edas violentas.", "hint": "Est\u00e1 estrictamente + prohibido hacer llamamientos para que se asesine, mate o agreda f\u00edsicamente + a personas o grupos. Est\u00e1 prohibido apoyar a grupos o acontecimientos + violentos."}, "fr": {"text": "Pas d\u2019incitation \u00e0 la violence ou + de promotion d\u2019id\u00e9ologies violentes.", "hint": "L\u2019appel au + meutre, \u00e0 la violence ou \u00e0 l\u2019action physique envers des personnes + ou des groupes de personnes est strictement interdit. Le soutien \u00e0 des + groupes ou \u00e9v\u00e8nements violents est interdit."}, "nl": {"text": "Niet + aanzetten tot geweld of verspreiden van gewelddadige ideologie\u00ebn.", "hint": + "Mensen of groepen aanzetten tot moord, aanslagen of fysieke aanvallen is + ten strengste verboden. Steun voor gewelddadige groeperingen of evenementen + is verboden."}, "ru": {"text": "\u0417\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442\u0441\u044f + \u043f\u043e\u0434\u0441\u0442\u0440\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e + \u043a \u0436\u0435\u0441\u0442\u043e\u043a\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 + \u043f\u0440\u043e\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0436\u0435\u0441\u0442\u043e\u043a\u0438\u0445 + \u0438\u0434\u0435\u043e\u043b\u043e\u0433\u0438\u0439.", "hint": "\u041f\u0440\u0438\u0437\u044b\u0432\u044b + \u043a \u043f\u043e\u043a\u0443\u0448\u0435\u043d\u0438\u044f\u043c, \u0443\u0431\u0438\u0439\u0441\u0442\u0432\u0430\u043c + \u0438 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0430\u0442\u0430\u043a\u0430\u043c + \u043d\u0430 \u043b\u044e\u0434\u0435\u0439 \u0438\u043b\u0438 \u0433\u0440\u0443\u043f\u043f\u044b + \u043b\u044e\u0434\u0435\u0439 \u0441\u0442\u0440\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u044b. + \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0436\u0435\u0441\u0442\u043e\u043a\u0438\u0445 + \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432 \u0438\u043b\u0438 + \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u0430."}, + "zh-CN": {"text": "\u4e0d\u5f97\u717d\u52a8\u66b4\u529b\u6216\u5ba3\u626c\u66b4\u529b\u610f\u8bc6\u5f62\u6001", + "hint": "\u4e25\u7981\u547c\u5401\u6697\u6740\u3001\u8c0b\u6740\u6216\u4eba\u8eab\u653b\u51fb\u4ed6\u4eba\u6216\u56e2\u4f53\u3002\u7981\u6b62\u652f\u6301\u66b4\u529b\u56e2\u4f53\u6216\u4e8b\u4ef6\u3002"}, + "zh-TW": {"text": "\u56b4\u7981\u717d\u52d5\u66b4\u529b\u6216\u5ba3\u63da\u66b4\u529b\u610f\u8b58\u5f62\u614b", + "hint": "\u56b4\u7981\u547c\u7c72\u6697\u6bba\u3001\u8b00\u6bba\u6216\u4eba\u8eab\u653b\u64ca\u4ed6\u4eba\u6216\u5718\u9ad4\u3002\u56b4\u7981\u652f\u6301\u66b4\u529b\u5718\u9ad4\u6216\u4e8b\u4ef6\u3002"}}}, + {"id": "4", "text": "No harassment, block evasion, dogpiling, or doxxing of + others", "hint": "Repeat attempts to communicate with users who have blocked + you or creation of accounts solely to harass or insult individuals is strictly + prohibited. Coordinated activity to attack other users is prohibited. Posting + of private personal information about others is prohibited.", "translations": + {"de": {"text": "Keine Bel\u00e4stigungen, Umgehung von Blockierungen, Dogpiling + oder Doxxing.", "hint": "Wiederholte Kommunikationsversuche mit Profilen, + die dich blockiert haben, oder die Erstellung neuer Konten, die ausschlie\u00dflich + dazu dienen, andere zu bel\u00e4stigen oder zu beleidigen, sind strengstens + verboten. Koordinierte Angriffe auf andere Profile sind verboten. Die Ver\u00f6ffentlichung + von privaten und pers\u00f6nlichen Informationen anderer ist verboten."}, + "es": {"text": "No acosar, evadir bloqueos, \"dogpiling\" (abuso en l\u00ednea + por grupos de acosadores) o doxeo de otros.", "hint": "Est\u00e1 estrictamente + prohibido intentar comunicarse repetidamente con usuarios que te hayan bloqueado + o crear cuentas con el \u00fanico fin de acosar o insultar a otras personas. + Queda prohibida la actividad coordinada para atacar a otros usuarios. Est\u00e1 + prohibido publicar informaci\u00f3n personal privada sobre otras personas."}, + "fr": {"text": "Pas de harc\u00e8lement, d\u2019esquive de blocage, de \u201cdogpiling\u201d, + ou de divulgation de donn\u00e9es personnelles d\u2019autrui.", "hint": "Les + tentatives r\u00e9p\u00e9t\u00e9es de communiquer avec des utilisateur\u00b7ices + qui vont ont bloqu\u00e9 ainsi que la cr\u00e9ation de comptes pour harceler + ou insulter autrui sont strictement interdites. Les attaques coordonn\u00e9es + contre autrui sont interdites. La publication de donn\u00e9es personnelles + d\u2019autrui est interdite."}, "nl": {"text": "Geen intimidatie, omzeilen + van blokkades, groepsaanvallen of het verspreiden van priv\u00e9gegevens van + anderen.", "hint": "Herhaalde pogingen tot communiceren met gebruikers die + je hebben geblokkeerd, of het maken van accounts enkel om personen te intimideren + of beledigen is ten strengste verboden. Geco\u00f6rdineerde activiteit om + andere gebruikers aan te vallen is verboden. Het plaatsen van priv\u00e9-gegevens + van anderen is verboden."}, "ru": {"text": "\u0417\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442\u0441\u044f + \u0442\u0440\u0430\u0432\u043b\u044f, \u0438\u0437\u0431\u0435\u0433\u0430\u043d\u0438\u0435 + \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a, \u043d\u0430\u0431\u0435\u0433\u0438 + \u0438 \u0440\u0430\u0437\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 + \u043b\u0438\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 + \u0434\u0440\u0443\u0433\u0438\u0445 \u043b\u0438\u0446.", "hint": "\u041f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0435\u0441\u044f + \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c + \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438, + \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u0441 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043b\u0438, + \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0443\u0447\u0451\u0442\u043d\u044b\u0445 + \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e + \u0440\u0430\u0434\u0438 \u0442\u0440\u0430\u0432\u043b\u0438 \u0438\u043b\u0438 + \u043e\u0441\u043a\u043e\u0440\u0431\u043b\u0435\u043d\u0438\u0439, \u0441\u0442\u0440\u043e\u0433\u043e + \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u044b. \u0421\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f + \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0441 \u0446\u0435\u043b\u044c\u044e + \u0430\u0442\u0430\u043a\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 + \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 + \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u0430. \u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f + \u043b\u0438\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 + \u0434\u0440\u0443\u0433\u0438\u0445 \u043b\u0438\u0446 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u0430."}, + "zh-CN": {"text": "\u4e0d\u5f97\u9a9a\u6270\u3001\u56de\u907f\u5c01\u7981\u3001\u8bfd\u8c24\u6216\u653b\u51fb\u4ed6\u4eba", + "hint": "\u4e25\u7981\u91cd\u590d\u5c1d\u8bd5\u4e0e\u5df2\u5c01\u7981\u60a8\u7684\u7528\u6237\u4ea4\u6d41\uff0c\u6216\u4ec5\u4e3a\u9a9a\u6270\u6216\u4fae\u8fb1\u4ed6\u4eba\u800c\u521b\u5efa\u8d26\u6237\u3002\u4e25\u7981\u534f\u540c\u653b\u51fb\u5176\u4ed6\u7528\u6237\u3002\u7981\u6b62\u53d1\u5e03\u4ed6\u4eba\u7684\u79c1\u4eba\u4e2a\u4eba\u4fe1\u606f\u3002"}, + "zh-TW": {"text": "\u56b4\u7981\u9a37\u64fe\u3001\u8ff4\u907f\u5c01\u9396\u3001\u717d\u52d5\u6216\u8aa3\u884a\u4ed6\u4eba", + "hint": "\u56b4\u7981\u91cd\u8907\u5617\u8a66\u8207\u5df2\u5c01\u9396\u60a8\u7684\u4f7f\u7528\u8005\u6e9d\u901a\uff0c\u6216\u7d14\u7cb9\u70ba\u4e86\u9a37\u64fe\u6216\u4fae\u8fb1\u4ed6\u4eba\u800c\u5efa\u7acb\u5e33\u865f\u3002\u7981\u6b62\u653b\u64ca\u5176\u4ed6\u4f7f\u7528\u8005\u7684\u5354\u8abf\u6d3b\u52d5\u3002\u7981\u6b62\u5f35\u8cbc\u4ed6\u4eba\u7684\u79c1\u4eba\u500b\u4eba\u8cc7\u8a0a\u3002"}}}, + {"id": "7", "text": "Do not share information widely-known to be false and + misleading", "hint": "False and misleading information and links from low-quality + sources may not be posted, especially if they are likely to mislead or confuse + others or endanger their safety.", "translations": {"de": {"text": "Verbreitet + keine Informationen, von denen allgemein bekannt ist, dass sie falsch oder + irref\u00fchrend.", "hint": "Falsche und irref\u00fchrende Informationen sowie + Links aus unseri\u00f6sen Quellen d\u00fcrfen nicht gepostet werden, insbesondere + wenn sie geeignet sind, andere in die Irre zu f\u00fchren oder deren Sicherheit + zu gef\u00e4hrden."}, "es": {"text": "No compartas informaci\u00f3n ampliamente + conocida por ser falsa y enga\u00f1osa.", "hint": "No est\u00e1 permitido + publicar informaci\u00f3n falsa y enga\u00f1osa ni enlaces de fuentes de baja + calidad, especialmente si pueden inducir a error o confusi\u00f3n a otras + personas o poner en peligro su seguridad."}, "fr": {"text": "Ne partagez pas + d\u2019informations connues pour \u00eatre fausses ou trompeuses.", "hint": + "Les informations fausses ou trompeuses, ainsi que les liens vers des sources + de mauvaise qualit\u00e9 ne doivent pas \u00eatre publi\u00e9es, particuli\u00e8rement + si elles risquent de tromper, d\u2019induire en erreur, de semer la confusion + ou de mettre des personnes en danger."}, "nl": {"text": "Deel geen informatie + die algemeen bekend staat als onjuist en misleidend.", "hint": "Onjuiste en + misleidende informatie en links naar onbetrouwbare bronnen mogen niet geplaatst + worden, zeker als deze waarschijnlijk anderen misleiden of verwarren, of hun + veiligheid in gevaar brengt."}, "ru": {"text": "\u041d\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0439\u0442\u0435 + \u0437\u0430\u0432\u0435\u0434\u043e\u043c\u043e \u043b\u043e\u0436\u043d\u0443\u044e + \u0438 \u0432\u0432\u043e\u0434\u044f\u0449\u0443\u044e \u0432 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0435 + \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e.", "hint": "\u0417\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u0430 + \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043b\u043e\u0436\u043d\u043e\u0439 + \u0438 \u0432\u0432\u043e\u0434\u044f\u0449\u0435\u0439 \u0432 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0435 + \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 \u0441\u0441\u044b\u043b\u043e\u043a + \u0438\u0437 \u043d\u0438\u0437\u043a\u043e\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 + \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e + \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 + \u0441\u0431\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0445 \u043b\u044e\u0434\u0435\u0439 + \u0441 \u0442\u043e\u043b\u043a\u0443, \u0437\u0430\u043f\u0443\u0442\u0430\u0442\u044c + \u0438\u0445, \u0438\u043b\u0438 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044c + \u0438\u0445 \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438."}, "zh-CN": + {"text": "\u4e0d\u5f97\u5206\u4eab\u4f17\u6240\u5468\u77e5\u7684\u865a\u5047\u548c\u8bef\u5bfc\u6027\u4fe1\u606f\r\n", + "hint": "\u4e0d\u5f97\u53d1\u5e03\u865a\u5047\u548c\u8bef\u5bfc\u6027\u4fe1\u606f\u4ee5\u53ca\u6765\u81ea\u4f4e\u8d28\u91cf\u6765\u6e90\u7684\u94fe\u63a5\uff0c\u5c24\u5176\u662f\u53ef\u80fd\u8bef\u5bfc\u6216\u6df7\u6dc6\u4ed6\u4eba\u6216\u5371\u53ca\u4ed6\u4eba\u5b89\u5168\u7684\u4fe1\u606f\u3002"}, + "zh-TW": {"text": "\u8acb\u52ff\u5206\u4eab\u5ee3\u70ba\u4eba\u77e5\u7684\u865b\u5047\u548c\u8aa4\u5c0e\u8cc7\u8a0a", + "hint": "\u4e0d\u5f97\u5f35\u8cbc\u865b\u5047\u548c\u8aa4\u5c0e\u8cc7\u8a0a\u4ee5\u53ca\u4f86\u81ea\u4f4e\u54c1\u8cea\u4f86\u6e90\u7684\u9023\u7d50\uff0c\u5c24\u5176\u662f\u53ef\u80fd\u8aa4\u5c0e\u6216\u6df7\u6dc6\u4ed6\u4eba\u6216\u5371\u5bb3\u4ed6\u4eba\u5b89\u5168\u7684\u8cc7\u8a0a\u3002"}}}, + {"id": "1008", "text": "Content created by others must be attributed, and + use of generative AI must be disclosed", "hint": "Content created by others + must clearly provide a reference to the author, creator, or source. For adult + content, this should include performers. Accounts may not solely post AI-generated + content.", "translations": {"de": {"text": "Von anderen erstellte Inhalte + m\u00fcssen gekennzeichnet und die Nutzung generativer KI offengelegt werden.", + "hint": "Von anderen erstellte Inhalte m\u00fcssen durch einen eindeutigen + Verweis auf den/die Autor*in oder die Quelle gekennzeichnet werden. Bei nicht + jugendfreien Inhalten sollte dies auch die Darsteller*innen einschlie\u00dfen. + Konten d\u00fcrfen nicht ausschlie\u00dflich KI-generierte Inhalte posten."}, + "es": {"text": "Los contenidos creados por terceros deben ser atribuidos y + el uso de IA debe ser revelado.", "hint": "Los contenidos creados por terceros + deben proporcionar claramente una referencia al autor, creador o fuente. En + el caso de los contenidos para adultos, debe incluirse a los artistas. Las + cuentas no pueden publicar \u00fanicamente contenidos generados por IA."}, + "fr": {"text": "Le contenu cr\u00e9e par autrui doit \u00eatre attribu\u00e9, + et l\u2019utilisation d\u2019IA g\u00e9n\u00e9rative doit \u00eatre marqu\u00e9 + comme tel.", "hint": "Le contenu cr\u00e9\u00e9 par autrui doit fournir une + r\u00e9f\u00e9rence explicite \u00e0 son auteur\u00b7ice, cr\u00e9ateur\u00b7ice + ou sa source. Cela inclut les acteur\u00b7ice de contenu pour adulte. Les + comptes publiant exclusivement du contenu g\u00e9n\u00e9r\u00e9 par IA sont + interdits."}, "nl": {"text": "Inhoud gemaakt door anderen moet worden toegeschreven, + en het gebruik van generatieve AI moet worden aangegeven.", "hint": "Inhoud + gemaakt door anderen moet een duidelijke referentie naar de auteur, maker + of bron bevatten. Voor Content created by others must clearly provide a reference + to the author, creator, or source. Voor inhoud voor volwassenen, moet het + model worden vermeld. Accounts mogen niet uitsluitend door AI gegenereerde + inhoud plaatsen."}, "ru": {"text": "\u041a\u043e\u043d\u0442\u0435\u043d\u0442, + \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0434\u0440\u0443\u0433\u0438\u043c\u0438, + \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c\u0441\u044f + \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0430\u0432\u0442\u043e\u0440\u0441\u0442\u0432\u0430, + \u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 + \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e + \u0418\u0418 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c + \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u043e.", "hint": "\u041a\u043e\u043d\u0442\u0435\u043d\u0442, + \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0434\u0440\u0443\u0433\u0438\u043c\u0438, + \u0434\u043e\u043b\u0436\u0435\u043d \u044f\u0432\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c + \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f + \u043e\u0442\u0441\u044b\u043b\u043a\u043e\u0439 \u043a \u0430\u0432\u0442\u043e\u0440\u0443, + \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044e \u0438\u043b\u0438 + \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0443. \u0414\u043b\u044f + \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0445 + \u044d\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 + \u0441\u0435\u0431\u044f \u0430\u043a\u0442\u0451\u0440\u043e\u0432. \u0423\u0447\u0451\u0442\u043d\u044b\u0435 + \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 + \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e + \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 + \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0418\u0418."}, "zh-CN": + {"text": "\u4ed6\u4eba\u521b\u5efa\u7684\u5185\u5bb9\u5fc5\u987b\u6ce8\u660e\u51fa\u5904\uff0c\u4f7f\u7528\u4eba\u5de5\u667a\u80fd\u4ea7\u751f\u7684\u5185\u5bb9\u5fc5\u987b\u516c\u5f00\u548c\u62ab\u9732\u8bf4\u660e", + "hint": "\u4ed6\u4eba\u521b\u5efa\u7684\u5185\u5bb9\u5fc5\u987b\u660e\u786e\u6ce8\u660e\u4f5c\u8005\u3001\u521b\u5efa\u8005\u6216\u6765\u6e90\u3002\u5bf9\u4e8e\u6210\u4eba\u5185\u5bb9\uff0c\u5e94\u5305\u62ec\u8868\u6f14\u8005\u3002\u8d26\u6237\u4e0d\u5f97\u4ec5\u53d1\u5e03\u4eba\u5de5\u667a\u80fd\u751f\u6210\u7684\u5185\u5bb9\u3002"}, + "zh-TW": {"text": "\u7531\u4ed6\u4eba\u5275\u4f5c\u7684\u5167\u5bb9\u5fc5\u9808\u8a3b\u660e\u4f86\u6e90\uff0c\u4f7f\u7528\u4eba\u5de5\u667a\u80fd\u7522\u751f\u7684\u5167\u5bb9\u5fc5\u9808\u516c\u958b\u548c\u62ab\u9732\u8aaa\u660e", + "hint": "\u4ed6\u4eba\u5275\u4f5c\u7684\u5167\u5bb9\u5fc5\u9808\u6e05\u695a\u63d0\u4f9b\u4f5c\u8005\u3001\u5275\u4f5c\u4eba\u6216\u4f86\u6e90\u7684\u53c3\u7167\u3002\u5c0d\u65bc\u6210\u4eba\u5167\u5bb9\uff0c\u9019\u61c9\u8a72\u5305\u62ec\u8868\u6f14\u8005\u3002\u5e33\u6236\u4e0d\u5f97\u50c5\u767c\u4f48\u4eba\u5de5\u667a\u80fd\u7522\u751f\u7684\u5167\u5bb9\u3002"}}}]}' + headers: + Accept-Ranges: + - bytes + Age: + - '46' + Connection: + - keep-alive + Date: + - Sun, 17 Aug 2025 14:16:14 GMT + Strict-Transport-Security: + - max-age=31557600 + Vary: + - Accept, Origin, Accept-Encoding + X-Cache: + - MISS, HIT, HIT + X-Cache-Hits: + - 0, 2, 1 + X-Served-By: + - cache-fra-etou8220030-FRA, cache-fra-etou8220030-FRA, cache-hel1410029-HEL + X-Timer: + - S1755440174.188084,VS0,VE1 + alt-svc: + - h3=":443";ma=86400,h3-29=":443";ma=86400,h3-27=":443";ma=86400 + cache-control: + - max-age=300, public, stale-while-revalidate=30, stale-if-error=86400 + content-length: + - '23941' + content-security-policy: + - default-src 'none'; frame-ancestors 'none'; form-action 'none' + content-type: + - application/json; charset=utf-8 + etag: + - W/"aca3b441fa0ba4d884f0bfdc8488c348" + referrer-policy: + - same-origin + via: + - 1.1 varnish, 1.1 varnish, 1.1 varnish + x-content-type-options: + - nosniff + x-frame-options: + - DENY + x-ratelimit-limit: + - '300' + x-ratelimit-remaining: + - '297' + x-ratelimit-reset: + - '2025-08-17T13:55:00.593343Z' + x-request-id: + - a39dab07279179e4ef4982613648e814 + x-runtime: + - '0.014526' + x-xss-protection: + - '0' + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes_entity_tests/test_entity_shallowquote.yaml b/tests/cassettes_entity_tests/test_entity_shallowquote.yaml new file mode 100644 index 0000000..0512f2a --- /dev/null +++ b/tests/cassettes_entity_tests/test_entity_shallowquote.yaml @@ -0,0 +1,138 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, br + Authorization: + - DUMMY + Connection: + - keep-alive + User-Agent: + - mastodonpy + method: GET + uri: https://mastodon.social/api/v1/statuses/115044073088181107 + response: + body: + string: '{"id": "115044073088181107", "created_at": "2025-08-17T12:20:44.088Z", + "in_reply_to_id": "115044053131672379", "in_reply_to_account_id": "109446733188999785", + "sensitive": false, "spoiler_text": "", "visibility": "public", "language": + "en", "uri": "https://bsky.brid.gy/convert/ap/at://did:plc:5syfqzormjkutgo5hi2u2gpr/app.bsky.feed.post/3lwlunj3oqs22", + "url": "https://bsky.brid.gy/r/https://bsky.app/profile/did:plc:5syfqzormjkutgo5hi2u2gpr/post/3lwlunj3oqs22", + "replies_count": 0, "reblogs_count": 0, "favourites_count": 0, "edited_at": + null, "favourited": false, "reblogged": false, "muted": false, "bookmarked": + false, "content": "

actual reply that quotes a post that quotes a post bsky.app/profile/h4lc...

RE: + https://bsky.app/profile/did:plc:5syfqzormjkutgo5hi2u2gpr/post/3lwlumdwf522i

", + "filtered": [], "reblog": null, "account": {"id": "115043949422165680", "username": + "h4lcy.bsky.social", "acct": "h4lcy.bsky.social@bsky.brid.gy", "display_name": + "", "locked": false, "bot": false, "discoverable": true, "indexable": true, + "group": false, "created_at": "2025-07-09T00:00:00.000Z", "note": "\ud83c\udf09 + bridged from h4lcy.bsky.social on Bluesky + by Bridgy + Fed", "url": "https://bsky.brid.gy/r/https://bsky.app/profile/h4lcy.bsky.social", + "uri": "https://bsky.brid.gy/ap/did:plc:5syfqzormjkutgo5hi2u2gpr", "avatar": + "https://files.mastodon.social/cache/accounts/avatars/115/043/949/422/165/680/original/3e1dd77d9101ba91.png", + "avatar_static": "https://files.mastodon.social/cache/accounts/avatars/115/043/949/422/165/680/original/3e1dd77d9101ba91.png", + "header": "https://files.mastodon.social/cache/accounts/headers/115/043/949/422/165/680/original/5e90a3286a31ed8d.png", + "header_static": "https://files.mastodon.social/cache/accounts/headers/115/043/949/422/165/680/original/5e90a3286a31ed8d.png", + "followers_count": 0, "following_count": 0, "statuses_count": 3, "last_status_at": + "2025-08-17", "hide_collections": false, "emojis": [], "fields": [{"name": + "Web site", "value": "https://bsky.app/profile/h4lcy.bsky.social", + "verified_at": null}]}, "media_attachments": [], "mentions": [], "tags": [], + "emojis": [], "quote": {"state": "accepted", "quoted_status": {"id": "115044070560414080", + "created_at": "2025-08-17T12:20:05.117Z", "in_reply_to_id": "115044053131672379", + "in_reply_to_account_id": "109446733188999785", "sensitive": false, "spoiler_text": + "", "visibility": "public", "language": "en", "uri": "https://bsky.brid.gy/convert/ap/at://did:plc:5syfqzormjkutgo5hi2u2gpr/app.bsky.feed.post/3lwlumdwf522i", + "url": "https://bsky.brid.gy/r/https://bsky.app/profile/did:plc:5syfqzormjkutgo5hi2u2gpr/post/3lwlumdwf522i", + "replies_count": 0, "reblogs_count": 0, "favourites_count": 0, "edited_at": + null, "favourited": false, "reblogged": false, "muted": false, "bookmarked": + false, "content": "

actual reply that quotes a bsky post bsky.app/profile/h4lc...

RE: https://bsky.app/profile/did:plc:5syfqzormjkutgo5hi2u2gpr/post/3lwlug73kn22i

", + "filtered": [], "reblog": null, "account": {"id": "115043949422165680", "username": + "h4lcy.bsky.social", "acct": "h4lcy.bsky.social@bsky.brid.gy", "display_name": + "", "locked": false, "bot": false, "discoverable": true, "indexable": true, + "group": false, "created_at": "2025-07-09T00:00:00.000Z", "note": "\ud83c\udf09 + bridged from h4lcy.bsky.social on Bluesky + by Bridgy + Fed", "url": "https://bsky.brid.gy/r/https://bsky.app/profile/h4lcy.bsky.social", + "uri": "https://bsky.brid.gy/ap/did:plc:5syfqzormjkutgo5hi2u2gpr", "avatar": + "https://files.mastodon.social/cache/accounts/avatars/115/043/949/422/165/680/original/3e1dd77d9101ba91.png", + "avatar_static": "https://files.mastodon.social/cache/accounts/avatars/115/043/949/422/165/680/original/3e1dd77d9101ba91.png", + "header": "https://files.mastodon.social/cache/accounts/headers/115/043/949/422/165/680/original/5e90a3286a31ed8d.png", + "header_static": "https://files.mastodon.social/cache/accounts/headers/115/043/949/422/165/680/original/5e90a3286a31ed8d.png", + "followers_count": 0, "following_count": 0, "statuses_count": 3, "last_status_at": + "2025-08-17", "hide_collections": false, "emojis": [], "fields": [{"name": + "Web site", "value": "https://bsky.app/profile/h4lcy.bsky.social", + "verified_at": null}]}, "media_attachments": [], "mentions": [], "tags": [], + "emojis": [], "quote": {"state": "accepted", "quoted_status_id": "115044056977193502"}, + "card": null, "poll": null}}, "card": null, "poll": null}' + headers: + Connection: + - keep-alive + Date: + - Sun, 17 Aug 2025 14:16:04 GMT + Strict-Transport-Security: + - max-age=31557600 + Vary: + - Authorization, Origin, Accept-Encoding + X-Cache: + - MISS, MISS, MISS + X-Cache-Hits: + - 0, 0, 0 + X-Served-By: + - cache-fra-eddf8230051-FRA, cache-fra-eddf8230021-FRA, cache-hel1410027-HEL + X-Timer: + - S1755440164.400819,VS0,VE315 + accept-ranges: + - none + alt-svc: + - h3=":443";ma=86400,h3-29=":443";ma=86400,h3-27=":443";ma=86400 + cache-control: + - private, no-store + content-length: + - '6039' + content-security-policy: + - default-src 'none'; frame-ancestors 'none'; form-action 'none' + content-type: + - application/json; charset=utf-8 + etag: + - W/"d4ceadbc6c817585858affce5de7be25" + referrer-policy: + - same-origin + transfer-encoding: + - chunked + via: + - 1.1 varnish, 1.1 varnish, 1.1 varnish + x-content-type-options: + - nosniff + x-frame-options: + - DENY + x-ratelimit-limit: + - '300' + x-ratelimit-remaining: + - '298' + x-ratelimit-reset: + - '2025-08-17T14:20:00.586582Z' + x-request-id: + - cbbae620acf1bfcb1df094c657eeeaee + x-runtime: + - '0.127146' + x-xss-protection: + - '0' + status: + code: 200 + message: OK +version: 1 diff --git a/tests/test_entities.py b/tests/test_entities.py index 1d2293a..e4e0f06 100644 --- a/tests/test_entities.py +++ b/tests/test_entities.py @@ -126,6 +126,40 @@ def test_entity_status(mastodon_base, mastodon_admin): if sys.version_info >= (3, 9): assert real_issubclass(type(result), Status), str(type(result)) + ' is not a subclass of Status after to_json/from_json (additional function)' +@pytest.mark.vcr( + filter_query_parameters=[('access_token', 'DUMMY'), ('client_id', 'DUMMY'), ('client_secret', 'DUMMY')], + filter_post_data_parameters=[('access_token', 'DUMMY'), ('client_id', 'DUMMY'), ('client_secret', 'DUMMY')], + filter_headers=[('Authorization', 'DUMMY')], + before_record_request=vcr_filter, + before_record_response=token_scrubber, + match_on=['method', 'uri'], + cassette_library_dir='tests/cassettes_entity_tests' +) +def test_entity_quote(mastodon_base, mastodon_admin): + mastodon = mastodon_base + result = mastodon.status(115044073088181107).quote + assert real_issubclass(type(result), Quote), str(type(result)) + ' is not a subclass of Quote' + result = Entity.from_json(result.to_json()) + if sys.version_info >= (3, 9): + assert real_issubclass(type(result), Quote), str(type(result)) + ' is not a subclass of Quote after to_json/from_json' + +@pytest.mark.vcr( + filter_query_parameters=[('access_token', 'DUMMY'), ('client_id', 'DUMMY'), ('client_secret', 'DUMMY')], + filter_post_data_parameters=[('access_token', 'DUMMY'), ('client_id', 'DUMMY'), ('client_secret', 'DUMMY')], + filter_headers=[('Authorization', 'DUMMY')], + before_record_request=vcr_filter, + before_record_response=token_scrubber, + match_on=['method', 'uri'], + cassette_library_dir='tests/cassettes_entity_tests' +) +def test_entity_shallowquote(mastodon_base, mastodon_admin): + mastodon = mastodon_base + result = mastodon.status(115044073088181107).quote.quoted_status.quote + assert real_issubclass(type(result), ShallowQuote), str(type(result)) + ' is not a subclass of ShallowQuote' + result = Entity.from_json(result.to_json()) + if sys.version_info >= (3, 9): + assert real_issubclass(type(result), ShallowQuote), str(type(result)) + ' is not a subclass of ShallowQuote after to_json/from_json' + @pytest.mark.vcr( filter_query_parameters=[('access_token', 'DUMMY'), ('client_id', 'DUMMY'), ('client_secret', 'DUMMY')], filter_post_data_parameters=[('access_token', 'DUMMY'), ('client_id', 'DUMMY'), ('client_secret', 'DUMMY')], @@ -865,6 +899,23 @@ def test_entity_instanceusageusers(mastodon_base, mastodon_admin): if sys.version_info >= (3, 9): assert real_issubclass(type(result), InstanceUsageUsers), str(type(result)) + ' is not a subclass of InstanceUsageUsers after to_json/from_json' +@pytest.mark.vcr( + filter_query_parameters=[('access_token', 'DUMMY'), ('client_id', 'DUMMY'), ('client_secret', 'DUMMY')], + filter_post_data_parameters=[('access_token', 'DUMMY'), ('client_id', 'DUMMY'), ('client_secret', 'DUMMY')], + filter_headers=[('Authorization', 'DUMMY')], + before_record_request=vcr_filter, + before_record_response=token_scrubber, + match_on=['method', 'uri'], + cassette_library_dir='tests/cassettes_entity_tests' +) +def test_entity_ruletranslation(mastodon_base, mastodon_admin): + mastodon = mastodon_base + result = mastodon.instance().rules[0].translations['de'] + assert real_issubclass(type(result), RuleTranslation), str(type(result)) + ' is not a subclass of RuleTranslation' + result = Entity.from_json(result.to_json()) + if sys.version_info >= (3, 9): + assert real_issubclass(type(result), RuleTranslation), str(type(result)) + ' is not a subclass of RuleTranslation after to_json/from_json' + @pytest.mark.vcr( filter_query_parameters=[('access_token', 'DUMMY'), ('client_id', 'DUMMY'), ('client_secret', 'DUMMY')], filter_post_data_parameters=[('access_token', 'DUMMY'), ('client_id', 'DUMMY'), ('client_secret', 'DUMMY')],