Application APIs

1. Overview

2. Create an Application

This API is used to create a new application. A CleanSpeak application defines a content source and the filter rules for that content source.

2.1. Request

Create an Application with an automatically generated Id

URI (3.x, deprecated in 4.0.0)

POST /system/application

URI (4.x)

POST /api/system/application

Create an Application with the provided Id

URI (3.x, deprecated in 4.0.0)

POST /system/application/{applicationId}

URI (4.x)

POST /api/system/application/{applicationId}

Table 1. Request Parameters

applicationId [UUID] Optional

The Id of the Application to create. If this parameter is omitted an Id will be generated automatically.

Table 2. Request Body

application [Object] Required

The Application object.

application.moderationConfiguration.alwaysKeepMatches [Boolean] Optional Defaults to false Available since 3.26.0

A flag to enable all matches to be kept. This is useful if keepAdditionalContentPercent is less than 1.0 so that you can ensure that you are always keeping content that was matched on.

application.moderationConfiguration.approvalCheckOutMinutes [Integer] Optional defaults to 10

The number of minutes content is checked out for in the Approval Queue before it is automatically released to be eligible for another moderator to check out.

application.moderationConfiguration.approvalQueueSize [Integer] Optional defaults to 30

The number of items checked out of the Approval Queue at a time for a moderator.

application.moderationConfiguration.archiveConfiguration [Object] Optional

The archive configuration object.

application.moderationConfiguration.archiveConfiguration.enabled [Boolean] Optional defaults to false

Setting this value to true enables content deletion. This is false by default which means no content is deleted. If you’ll be sending in high volumes of content content deletion should be enabled. CleanSpeak is not designed to store content indefinitely.

application.moderationConfiguration.archiveConfiguration.storeDuration [Integer] Required

The number of units content should be kept. The unit value is determined by the storeTimeUnit.

application.moderationConfiguration.archiveConfiguration.storeOffsetDuration [Integer] Required

The number of units to be added to the storeDuration. The offset unit is determined by the storeOffsetTimeUnit.

application.moderationConfiguration.archiveConfiguration.storeOffsetTimeUnit [String] Required

The time unit for the offset. The possible values are:

  • minutes

  • hours

  • days

  • months

  • years

application.moderationConfiguration.archiveConfiguration.storeTimeUnit [String] Required

The time unit for the duration. The possible values are:

  • minutes

  • hours

  • days

  • months

  • years

application.moderationConfiguration.contentAlertCheckOutMinutes [Integer] Optional defaults to 10

The number of minutes content is checked out for in the Alert Queue before it is automatically released to be eligible for another moderator to check out.

application.moderationConfiguration.contentAlertQueueSize [Integer] Optional defaults to 30

The number of items checked out of the Alert Queue at a time for a moderator.

application.moderationConfiguration.contentDeletable [Boolean] Optional defaults to false

Set to true if you want the ability to delete content. Enabling this feature allows a moderator to delete content which in turn sends an event of type contentDelete to be consumed by the CleanSpeak event handler.

application.moderationConfiguration.contentEditable [Boolean] Optional defaults to false

Set to true if you want the ability to edit content. Enabling this feature allows a moderator to edit content which in turn sends an event of type contentEdit to be consumed by the CleanSpeak event handler.

application.moderationConfiguration.contentFlagAlertType [String] Optional defaults to User

By default when content is flagged a User alert is generated. Setting this to Content changes the behavior such that a Content alert is sent instead. The possible values are:

  • Content

  • User

application.moderationConfiguration.contentFlagUserScoreAdjustment [Integer] Optional

The amount the User score is adjusted when content is flagged. This value may be a positive or negative integer.

application.moderationConfiguration.contentUserActionsEnabled [Boolean] Optional defaults to false

Set to true if you want user actions enabled. Enable this if you intend to allow moderators to action users, for example mute, ban, kick users. When disabled you will not be able to select this application as a target for a user action.

application.moderationConfiguration.defaultActionIsQueueForApproval [Boolean] Optional defaults to false

Set to true if you want content to be queued for approval when no filter rules are hit. This includes content that matched a rule set to allow.

For example, when this parameter is set to true and the content

  • did not match any filter rules, do queue for approval.

  • did not match any filter rules, but the moderate request parameter for moderation is set to generateAlert or generatesContentAlert, do not queue for approval.

  • did match one or more filters with an action other than allow, do not queue for approval.

This feature may be used way to ensure all content is reviewed in some fashion by a moderator.

application.moderationConfiguration.dictionaryTags [Array<String>] Optional Available since 3.12.0

A list of dictionary tags to apply to moderation actions using this application.

Tags will cause the filter to throw out matches that exactly match dictionary words with any of the tags in this list.

application.moderationConfiguration.emailFilterMaxLength [Integer] Optional defaults to 50

This parameter specifies the maximum length that a match can be in order to be considered an email. If the match length is greater than the maximum match length the match will be ignored.

application.moderationConfiguration.emailFilterSpacePenalty [Double] Optional defaults to -0.05

This parameter specifies a penalty applied to the quality score if the match contains any spaces. For example, user@ example.com contains a space so the space penalty value will be added to the quality score. The email space penalty is applied once regardless of the number of spaces found in the match.

application.moderationConfiguration.emailOnAlerts [Boolean] Optional defaults to false

Set this parameter to true to email moderators for content alerts.

application.moderationConfiguration.emailOnContentFlagged [Boolean] Optional defaults to false

Set this parameter to true to email moderators when content is flagged.

application.moderationConfiguration.emailOnUserFlagged [Boolean] Optional defaults to false

Set this parameter to true to email moderators when users are flagged.

application.moderationConfiguration.emailRules [Array<[quality-filter-rule]>] Optional

The email filter rules. You must supply exactly three rules. Each rule must provide a score value which is the inclusive cutoff score for an email match. The rules correspond to a High, Medium and Low quality filter rule. In the Management Interface these rules are referenced as High, Medium and Low.

For example, the following are the default email rules:

{
  "emailRules": [
    {
      "score": 90,
      "action": "allow"
    },
    {
      "score": 70,
      "action": "allow"
    },
    {
      "score": 40,
      "action": "allow"
    }
  ]
}

application.moderationConfiguration.filterRules [Array] Optional

The list of blacklist filter rules.

application.moderationConfiguration.filterRules[x].tags [Array<String>] Required

The blacklist tags for this filter rule. A filter rule may have one or more tags.

application.moderationConfiguration.filterRules[x].locales [Array<String>] Optional

The match locales. If this parameter is omitted the filter rule will apply to all locales. See Locales.

application.moderationConfiguration.filterRules[x].mildAction [String] Required

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

application.moderationConfiguration.filterRules[x].mildAlertType [String] Optional

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

application.moderationConfiguration.filterRules[x].mildUserScoreAdjustment [String] Optional

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.

application.moderationConfiguration.filterRules[x].mediumAction [String] Required

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

application.moderationConfiguration.filterRules[x].mediumAlertType [String] Optional

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

application.moderationConfiguration.filterRules[x].mediumUserScoreAdjustment [String] Optional

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.

application.moderationConfiguration.filterRules[x].highAction [String] Required

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

application.moderationConfiguration.filterRules[x].highAlertType [String] Optional

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

application.moderationConfiguration.filterRules[x].highUserScoreAdjustment [String] Optional

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.

application.moderationConfiguration.filterRules[x].severeAction [String] Required

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

application.moderationConfiguration.filterRules[x].severeAlertType [String] Optional

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

application.moderationConfiguration.filterRules[x].severeUserScoreAdjustment [String] Optional

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.

application.moderationConfiguration.ignorableCharacters [String] Optional Defaults to "qxz" Available since 3.22.0

Set this parameter to a list of characters the filter can skip over to find a match. Only the letters a through z are permitted.

Specifically, this feature will catch any blacklist word even if separated by a single character on this list. Example: SxMxUxRxF Note: only the same letter may be used to separate the characters throughout the word and only one ignored character in a row is permitted.

application.moderationConfiguration.imageConfiguration [Object] Optional

The image moderation configuration object. This parameter and all nested parameters are only valid when imageOnly is set to true.

application.moderationConfiguration.imageConfiguration.commitDelay [Integer] Optional defaults to 45

The number of seconds to wait before a moderation decision made from the enhanced image moderation queue is committed.

application.moderationConfiguration.imageConfiguration.darkMode [Boolean] Optional defaults to true

Set this parameter to 'false' to disable the dark mode theme when viewing the enhanced image moderation queue.

application.moderationConfiguration.imageConfiguration.defaultTimerDuration [Integer] Optional defaults to 2

The number of seconds each image will be displayed in the queue before advancing to the next image when the queue is set to automatically advance without keyboard interaction. This value is the default value for this application for all moderators. A moderator may change this value for their own user preference.

application.moderationConfiguration.imageConfiguration.speedModerationLayout [Boolean] Optional defaults to true

Set this parameter to false to disable the enhanced image moderation queue layout and use the legacy mode.

application.moderationConfiguration.imageOnly [Boolean] Optional defaults to false

Set this parameter to true to enable this application for image only moderation. When this parameter is set to true the imageConfiguration parameters are used to provide additional configuration.

application.moderationConfiguration.keepAdditionalContentPercent [Float] optional Defaults to 1.0 Available since 3.26.0

A field that informs the filter how much content to keep beyond what is required. In situations where storage is impossible due to the database latency or load, this flag can dramatically reduce that load by cutting your unnecessary storage to zero. It is also useful to configure alwaysKeepMatches should you want to keep only content that matches.

imageFilterConfiguration.enabled [Boolean] optional Defaults to false Available since 3.28.0

A flag to enable the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterNudityConfiguration.enabled [Boolean] optional Defaults to false Available since 3.28.0

A flag to enable the nudity filter in the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterNudityConfiguration.partialNudityRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterNudityConfiguration.ignoredPartialNudityTags [Array<String>] optional Available since 3.28.0

A list of tags to ignore if the filter finds this specific kind of partial nudity.

application.moderationConfiguration.imageFilterConfiguration.mediaFilterNudityConfiguration.rawNudityRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterOffensiveConfiguration.enabled [Boolean] optional Defaults to false Available since 3.28.0

A flag to enable to the offensive filter in the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterOffensiveConfiguration.offensiveRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterOffensiveConfiguration.ignoredLabels [Array<String>] optional Available since 3.28.0

A list of labels to ignore if a matching offensive label is found in the content.

application.moderationConfiguration.imageFilterConfiguration.mediaFilterScamConfiguration.enabled [Boolean] optional Defaults to false Available since 3.28.0

A flag to enable the scam filter in the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterScamConfiguration.scamRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterWADConfiguration.enabled [Boolean] optional Defaults to false Available since 3.28.0

A flag to enable the Weapons, Alcohol, and Drugs filter in the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterWADConfiguration.alcoholRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterWADConfiguration.drugRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterWADConfiguration.weaponRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.mlFilterConfiguration.enabled [Boolean] optional Defaults to false Available since 4.0.0

A flag to enable Machine Learning.

application.moderationConfiguration.mlFilterConfiguration.locales [Array<String>] Required Available since 4.0.2

The selected locales will be sent to the Machine Learning engine to evaluate content for the selected models.

application.moderationConfiguration.mlFilterConfiguration.[model]Config.enabled [Boolean] optional Defaults to false Available since 4.0.0

A flag to enable a particular Machine Learning model. In lieu of [model], use 1 or more of the following values:

  • affinity - references shared interests, motivations or outlooks between the content author and another individual, group or entity

  • compassion - identifies with or shows concern, empathy, or support for the feelings/emotions of others

  • curiosity - attempts to clarify or ask follow-up questions to better understand another person or idea

  • identityAttack - negative or hateful comments targeting someone because of their identity

  • incoherent - Available since 4.1.0 - difficult to understand, nonsensical, may also pick up run-on sentences with no punctuation

  • insult - insulting, inflammatory, or negative comment towards a person or a group of people

  • nuance - incorporates multiple points of view in an attempt to provide a full picture or contribute useful detail and/or context

  • personalStory- includes a personal experience or story as a source of support for the statements made in the comment

  • profanity - swear words, curse words, or other obscene or profane language

  • reasoning - makes specific or well-reasoned points to provide a fuller understanding of the topic without disrespect or provocation

  • respect - shows deference or appreciation to others, or acknowledges the validity of another person

  • severeToxicity - very specific and volatile hate speech, usually referencing catch phrases of recognized hate groups

  • spam - Available since 4.1.0 - irrelevant and unsolicited commercial content

  • toxicity - a rude, disrespectful, or unreasonable comment that is likely to make people leave a discussion

  • threat - describes an intention to inflict pain, injury, or violence against an individual or group

  • unsubstantial - Available since 4.1.0 - trivial or short comments, e.g. lol, yes, ok

application.moderationConfiguration.mlFilterConfiguration.[model]Config.rules.mild [quality-filter-rule] optional Available since 4.0.0

See the enabled field for valid [model] values. This configures, for the mild level, the set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one). The default scores can be referenced in the sample "Retrieve an Application" response.

application.moderationConfiguration.mlFilterConfiguration.[model]Config.rules.medium [quality-filter-rule] optional Available since 4.0.0

See the enabled field for valid [model] values. This configures, for the medium level, the set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one). The default scores can be referenced in the sample "Retrieve an Application" response.

application.moderationConfiguration.mlFilterConfiguration.[model]Config.rules.high [quality-filter-rule] optional Available since 4.0.0

See the enabled field for valid [model] values. This configures, for the high level, the set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one). The default scores can be referenced in the sample "Retrieve an Application" response.

application.moderationConfiguration.mlFilterConfiguration.[model]Config.rules.severe [quality-filter-rule] optional Available since 4.0.0

See the enabled field for valid [model] values. This configures, for the severe level, the set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one). The default scores can be referenced in the sample "Retrieve an Application" response.

application.moderationConfiguration.videoFilterConfiguration.enabled [Boolean] optional Defaults to false Available since 3.28.0

A flag to enable the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterNudityConfiguration.enabled [Boolean] optional Defaults to false Available since 3.28.0

A flag to enable the nudity filter in the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterNudityConfiguration.partialNudityRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterNudityConfiguration.ignoredPartialNudityTags [Array<String>] optional Available since 3.28.0

A list of tags to ignore if the filter finds this specific kind of partial nudity.

application.moderationConfiguration.videoFilterConfiguration.mediaFilterNudityConfiguration.rawNudityRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterOffensiveConfiguration.enabled [Boolean] optional Available since 3.28.0

A flag to enable to the offensive filter in the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterOffensiveConfiguration.offensiveRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterOffensiveConfiguration.ignoredLabels [Array<String>] optional Available since 3.28.0

A list of labels to ignore if a matching offensive label is found in the content.

application.moderationConfiguration.videoFilterConfiguration.mediaFilterScamConfiguration.enabled [Boolean] optional Defaults to false Available since 3.28.0

A flag to enable the scam filter in the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterScamConfiguration.scamRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterWADConfiguration.enabled [Boolean] optional Defaults to false Available since 3.28.0

A flag to enable the Weapons, Alcohol, and Drugs filter in the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterWADConfiguration.alcoholRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterWADConfiguration.drugRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterWADConfiguration.weaponRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.noRuleUserScoreAdjustment [Integer] Optional

This score adjustment is used when the content did not match any rules. This value may be a positive or negative integer.

This may be used to increase a user score based upon good behavior, i.e. sending in content that did not contain any profanity. In this use case, you would provide a positive value for the adjustment.

This adjustment will only affect the user score while it is below 0. Once the user score is raised to 0 this adjustment will be ignored.

application.moderationConfiguration.persistent [Boolean] Optional defaults to false

Set this parameter to true to indicate the content type is persistent, false indicates this content is transient.

Persistent content is defined as content that is likely displayed indefinitely. A user can go and look at this content in the future by browsing a forum or performing a content search. Examples of persistent content include forum posts, profile pictures, etc. Persist content can be edited, deleted and pre-approved.

Transient content is defined as content that is displayed for a short period of time and then is likely gone forever. Transient content is usually synonymous with chat. This content cannot be pre-approved, edited or deleted.

Please note that both transient and persistent content in this context are persisted to the database.

application.moderationConfiguration.phoneNumberFilterMaxLength [Integer] Optional defaults to 20

This parameter specifies the maximum length that a match can be in order to be considered an phone number. If the match length is greater than the maximum match length the match will be ignored.

application.moderationConfiguration.phoneNumberFilterMinLength [Integer] Optional defaults to 7

This parameter specifies the minimum length that a match can be in order to be considered a phone number. The default value covers most world wide phone number formats.

application.moderationConfiguration.phoneNumberFilterSeparatorPenalty [Double] Optional defaults to -0.02

This parameter specifies a penalty that is applied to the quality score for a match if it contains any type of separator other than a dash or parenthesis. For example, 303;555;1234 contains two penalized separators so the separator penalty will be multiplied by the number of separators and added to the quality score.

application.moderationConfiguration.phoneNumberFilterSpacePenalty [Double] Optional defaults to -0.02

This parameter specifies a penalty that is applied to the quality score for a match if it contains one or more spaces. For example, 303 555 1234 contains two spaces so the space penalty will be multiplied by the number of spaces and added to the quality score.

application.moderationConfiguration.phoneNumberFilterWordPenalty [Double] Optional defaults to -0.03

This parameter specifies a penalty that is applied to the quality score for a match if it contains any words rather than digits. For example, three zero three 555 1234 contains three words so the word penalty will be multiplied by the number of words and added to the quality score.

application.moderationConfiguration.phoneNumberRules [Array<[quality-filter-rule]>] Optional

The phone number filter rules. You must supply exactly three rules. Each rule must provide a score value which is the inclusive cutoff score for a phone number match. The rules correspond to a High, Medium and Low quality filter rule. In the Management Interface these rules are referenced as High, Medium and Low.

For example, the following are the default phone number rules:

{
  "phoneNumberRules": [
    {
      "score": 90,
      "action": "allow"
    },
    {
      "score": 70,
      "action": "allow"
    },
    {
      "score": 40,
      "action": "allow"
    }
  ]
}

applicaiton.moderationConfiguration.proxy.enabled [Boolean] optional Defaults to false Available since 3.29.0-RC.1

A flag to determine if this application can send proxy requests. If disabled, all other fields will be ignored and it will not be possible to use the /content/item/moderate/proxy endpoint with this application.

applicaiton.moderationConfiguration.proxy.url [String] required Available since 3.29.0-RC.1

A destination url for the proxy to forward requests to. This is required if the proxy is enabled.

applicaiton.moderationConfiguration.proxy.connectTimeout [Integer] Optional Defaults to 2000 Available since 3.29.0-RC.1

A value that determines the maximum amount of time (in milliseconds) that CleanSpeak will wait for the connection to be established with the proxy service. If a connection takes longer than this then the request will result in a 400 on the /content/item/moderate/proxy endpoint.

applicaiton.moderationConfiguration.proxy.readTimeout [Integer] Optional Defaults to 1000 Available since 3.29.0-RC.1

A value that determines the maximum amount of time (in milliseconds) that CleanSpeak will wait for the initial read of the request to begin.

applicaiton.moderationConfiguration.proxy.headers [Object] Optional Available since 3.29.0-RC.1

An object of string keys to string values that will get encoded as headers on the proxy request.

applicaiton.moderationConfiguration.proxy.httpAuthenticationUsername [String] Optional Available since 3.29.0-RC.1

A username to supply on the proxy request. Set this if you require http basic authentication.

applicaiton.moderationConfiguration.proxy.httpAuthenticationPassword [String] Optional Available since 3.29.0-RC.1

A password to supply on the proxy request. Set this if you require http basic authentication.

applicaiton.moderationConfiguration.proxy.sslCertificate [String] Optional Available since 3.29.0-RC.1

A pem encoded ssl certificate to present as authorization on the proxy request.

application.moderationConfiguration.queuePersistentContent [Boolean] Optional defaults to false

Set this to true in order to asynchronously store persistent content. This may improve performance but there is a potential for data loss if an outage occurs before all content is committed to the database. Please consult with CleanSpeak Support if you are unsure how to use this feature.

application.moderationConfiguration.replacementCharacter [String] Optional

The character used during match replacement. If this value is set it will take precedence over replacementString.

application.moderationConfiguration.replacementString [String] Optional

The string used during match replacement. If neither replacementString or replacementCharacter are defined the default replacement character * will be utilized.

application.moderationConfiguration.returnFilterMatches [Boolean] Optional defaults to false Available since 3.9.1

Set this parameter to true in order to receive filter matches in the Moderate Content API response.

application.moderationConfiguration.rules [Object] Optional

The rules object. This object contains the Username Filter and Whitelist Filter rules.

application.moderationConfiguration.storeContent [Boolean] Optional defaults to false

Set this parameter to true in order to store content in the database. In order to take advantage of many of the advanced CleanSpeak moderation features you’ll need to store content.

application.moderationConfiguration.unicodeFilterRule.action [String] Optional defaults to allow Available since 3.22.0

The filter action for the unicode filter. Allowed options are allow or reject.

The unicode filter rejects content if it contains prohibited unicode ranges.

application.moderationConfiguration.unicodeFilterRule.data [String] Optional defaults to a provided config Available since 3.22.0

The unicode filter configuration represented as a dsl of ranges.

The ranges are described as a string of lines that may contain * Empty lines * Comments (a line starting with #) * Unicode ranges (A unicode codepoint is of the form \u0000 or \u{0} (Json unicode notation)) Ex: \u0000-\u{F}

A special condition is that the final unicode range may be an open range meaning the second unicode point is omitted.

Note: The ranges are inclusive so \u0000-\u000F includes the character \u000F

Note 2: The provided config may change between versions.

application.moderationConfiguration.urlFilterMaxLength [Integer] Optional defaults to 50

This parameter specifies the maximum length that a match can be in order to be considered a url. If the match length is greater than the maximum match length the match will be ignored.

application.moderationConfiguration.urlFilterSpacePenalty [Double] Optional defaults to -0.05

This parameter specifies a penalty that is applied to the quality score for a match if it contains one or more spaces. For example, www .ex a m ple .com contains spaces so the space penalty will added to the quality score.

application.moderationConfiguration.urlRules [Array] Optional

The url filter rules. You must supply exactly three rules. Each rule must provide a score value which is the inclusive cutoff score for a url match. The rules correspond to a High, Medium and Low quality filter rule. In the Management Interface these rules are referenced as High, Medium and Low.

For example, the following are the default url rules:

{
  "urlRules": [
    {
      "score": 90,
      "action": "allow"
    },
    {
      "score": 70,
      "action": "allow"
    },
    {
      "score": 40,
      "action": "allow"
    }
  ]
}

application.moderationConfiguration.urlRules [Array<[quality-filter-rule]>] Required

The url filter rules. You must supply exactly three rules. Each rule must provide a score value which is the inclusive cutoff score for a url match. The rules correspond to a High, Medium and Low quality filter rule. In the Management Interface these rules are referenced as High, Medium and Low.

{
  "urlRules": [
    {
      "score": 90,
      "action": "allow"
    },
    {
      "score": 70,
      "action": "allow"
    },
    {
      "score": 40,
      "action": "allow"
    }
  ]
}

applicaiton.moderationConfiguration.urlWhitelistTags [Array<String>] Optional Defaults to empty array

A list of URL whitelist tag names that you would like to include in this application. Any tags you add will include any whitelisted urls that are tagged with the same tag in the moderate workflow. Any whitelisted urls that are untagged are always used.

application.moderationConfiguration.userCheckOutMinutes [Integer] Optional defaults to 10

The number of minutes a Content User is checked out for before it is automatically released to be eligible for another moderator to check out.

application.moderationConfiguration.userFlagUserScoreAdjustment [Integer] Optional

The amount the User score is adjusted when the user is flagged. This value may be a positive or negative integer.

applicaiton.notificationServers [Array] Optional

A list of webhooks to use on an application. (This will create new webhooks every time)

Note: Notification Servers are now called Webhooks.

(See Handling Events for more details)

applicaiton.notificationServers[x].connectTimeout [Integer] Optional Defaults to 1000

The maximum amount of time a server will take to try to connect in milliseconds.

application.notificationServers[x].readTimeout [Integer] Optional Defaults to 2000

The maximum amount of time any read call will wait for data to flow.

application.notificationServers[x].description [String] Optional Since 3.27.0

A description of the webhook and its purpose.

application.notificationServers[x].eventsEnabled[eventType] [Boolean] Optional Defaults to true Since 3.27.0

A list of enabled event types for this webhook. If a value in this map is false, then it will not recieve events of that type. The possible values for eventType are as follows (each has a related section in Handling Events):

  • ContentAction

  • ContentApproval

  • ContentDelete

  • ContentEdit

  • FilterApproval

application.notificationServers[x].httpAuthenticationPassword [String] Optional

A password to supply on the event request.

application.notificationServers[x].httpAuthenticationUsername [String] Optional

A username to supply on the event request.

applicaiton.notificationServers[x].sslCertificate [String] Optional

An ssl client certificate to present on the event request.

application.notificationServers[x].url [String] required

The url of a server listening for events.

Example Request JSON
{
  "application": {
    "moderationConfiguration": {
      "alwaysKeepMatches": false,
      "approvalCheckOutMinutes": 10,
      "approvalQueueSize": 30,
      "archiveConfiguration": {
        "deleteOnly": true,
        "enabled": false
      },
      "contentAlertCheckOutMinutes": 10,
      "contentAlertQueueSize": 30,
      "contentDeletable": true,
      "contentEditable": true,
      "contentFlagAlertType": "User",
      "contentFlagUserScoreAdjustment": -3,
      "contentUserActionsEnabled": true,
      "ignorableCharacters": "qxz",
      "imageConfiguration": {
        "commitDelay": 45,
        "darkMode": true,
        "defaultTimerDuration": 2.0,
        "speedModerationLayout": true
      },
      "imageFilterConfiguration": {
        "enabled": true,
        "mediaFilterNudityConfiguration": {
          "enabled": true,
          "ignoredPartialNudityTags": [],
          "partialNudityRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "rawNudityRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterOffensiveConfiguration": {
          "enabled": true,
          "ignoredLabels": [],
          "offensiveRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterScamConfiguration": {
          "enabled": true,
          "scamRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterWADConfiguration": {
          "alcoholRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "drugRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "enabled": true,
          "weaponRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        }
      },
      "mlFilterConfiguration": {
        "affinityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "compassionConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "curiosityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "enabled": false,
        "locales": ["en"],
        "identityAttackConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "incoherentConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 74
            },
            "medium": {
              "action": "allow",
              "score": 84
            },
            "high": {
              "action": "allow",
              "score": 94
            },
            "severe": {
              "action": "allow",
              "score": 99
            }
          }
        },
        "insultConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "nuanceConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "personalStoryConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "profanityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "reasoningConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "respectConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "severeToxicityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "spamConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 70
            },
            "medium": {
              "action": "allow",
              "score": 80
            },
            "high": {
              "action": "allow",
              "score": 90
            },
            "severe": {
              "action": "allow",
              "score": 97
            }
          }
        },
        "threatConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "toxicityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "unsubstantialConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 79
            },
            "medium": {
              "action": "allow",
              "score": 79
            },
            "high": {
              "action": "allow",
              "score": 89
            },
            "severe": {
              "action": "allow",
              "score": 99
            }
          }
        }
      },
      "unicodeFilterRule": {
        "action": "allow",
        "data": "# Non-printable\n\\u0000-\\u0008\n\\u000B-\\u000C\n\\u000E-\\u001F\n\\u007F-\\u009F\n\n# Symbols, etc.\n\\u00A6-\\u00A8\n\\u00AA-\\u00AD\n\\u00AF-\\u00B0\n\\u00B7-\\u00B7\n\\u00BA-\\u00BB\n\\u02BB-\\u02FF\n\n# Combining marks\n\\u0300-\\u036F\n\\u0590-\\u05C0\n\n# Language sets\n\\u0700-\\u074F\n\\u0780-\\u085F\n\\u08A0-\\u1C7F\n\n# Language supplements and punctuation\n\\u1CC0-\\u1DB0\n\\u1DC0-\\u209F\n\n# More punctuation, symbols, shapes, etc.\n\\u20D0-\\u2599\n\\u2700-\\u2E7F\n\n# CJK punctuation\n\\u3000-\\u303F\n\n# Lisu and above\n\\uA4D0-\\uABFF\n\n# Everything after CJK and Hangul (mostly surrogates and private use)\n\\uD7B0-\\u{1F2FF}\n\n# Everything after Emoji\n\\u{1F700}-"
      },
      "videoFilterConfiguration": {
        "enabled": true,
        "mediaFilterNudityConfiguration": {
          "enabled": true,
          "ignoredPartialNudityTags": [],
          "partialNudityRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "rawNudityRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterOffensiveConfiguration": {
          "enabled": true,
          "ignoredLabels": [],
          "offensiveRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterScamConfiguration": {
          "enabled": true,
          "scamRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterWADConfiguration": {
          "alcoholRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "drugRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "enabled": true,
          "weaponRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        }
      },
      "defaultActionIsQueueForApproval": false,
      "dictionaryTags": [
        "whitelistA"
      ],
      "emailOnAlerts": false,
      "emailOnContentFlagged": false,
      "emailOnEscalations": false,
      "emailOnUserFlagged": false,
      "emailRules": [
        {
          "action": "allow",
          "score": 90
        },
        {
          "score": 70,
          "action": "allow"
        },
        {
          "score": 40,
          "action": "allow"
        }
      ],
      "filterRules": [
        {
          "highAction": "authorOnly",
          "highAlertType": "User",
          "locales": [],
          "mediumAction": "allow",
          "mildAction": "allow",
          "severeAction": "reject",
          "severeAlertType": "User",
          "tags": [
            "Vulgarity"
          ]
        },
        {
          "highAction": "allow",
          "highAlertType": "User",
          "locales": [
            "en"
          ],
          "mediumAction": "allow",
          "mildAction": "allow",
          "severeAction": "authorOnly",
          "severeAlertType": "User",
          "tags": [
            "Bullying"
          ]
        }
      ],
      "imageOnly": false,
      "keepAdditionalContentPercent": 1.0,
      "persistent": true,
      "phoneNumberRules": [
        {
          "action": "allow",
          "score": 90,
          "userScoreAdjustment": -10
        },
        {
          "alertType": "Content",
          "userScoreAdjustment": -5,
          "score": 70,
          "action": "allow"
        },
        {
          "score": 40,
          "alertType": "User",
          "userScoreAdjustment": -1,
          "action": "allow"
        }
      ],
      "proxy": {
        "connectTimeout": 2000,
        "enabled": true,
        "headers": {
          "Authorization": "APIKEY",
          "X-SomeHeader": "HeaderValue"
        },
        "httpAuthenticationPassword": "pass",
        "httpAuthenticationUsername": "user",
        "readTimeout": 4000,
        "sslCertificate": "-----BEGIN CERTIFICATE-----\nMIIDTzCCArigAwIBAgIJAMA7XJzxYkPUMA0GCSqGSIb3DQEBBQUAMHkxCzAJBgNV\nBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGZGVudmVyMRIwEAYDVQQKEwlp\nbnZlcnNvZnQxEjAQBgNVBAMTCWxvY2FsaG9zdDEkMCIGCSqGSIb3DQEJARYVc3Vw\ncG9ydEBpbnZlcnNvZnQuY29tMB4XDTE0MDQxMDE5NTA1MFoXDTE0MDUxMDE5NTA1\nMFoweTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNPMQ8wDQYDVQQHEwZkZW52ZXIx\nEjAQBgNVBAoTCWludmVyc29mdDESMBAGA1UEAxMJbG9jYWxob3N0MSQwIgYJKoZI\nhvcNAQkBFhVzdXBwb3J0QGludmVyc29mdC5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD\ngY0AMIGJAoGBAMZ0AasrmL41BOGhUOr1WVOUah5styok4NjXMRCyJWc7VEyt2lRW\nyaAQeIsR1wgmLJbo7YSC8gY4E9xfiIUqTwHK5bvDuS1T2jwsrIf0jaxjcB+Janol\nvWeVgIUTv5xuzWTWtFEjxwHoum/Ur/T8bigmPhiXwCMJTuP25bSB9Ov5AgMBAAGj\ngd4wgdswHQYDVR0OBBYEFFOEqiRBZtc1vgnC8Zi5QEa6rTDdMIGrBgNVHSMEgaMw\ngaCAFFOEqiRBZtc1vgnC8Zi5QEa6rTDdoX2kezB5MQswCQYDVQQGEwJVUzELMAkG\nA1UECBMCQ08xDzANBgNVBAcTBmRlbnZlcjESMBAGA1UEChMJaW52ZXJzb2Z0MRIw\nEAYDVQQDEwlsb2NhbGhvc3QxJDAiBgkqhkiG9w0BCQEWFXN1cHBvcnRAaW52ZXJz\nb2Z0LmNvbYIJAMA7XJzxYkPUMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD\ngYEAwXVTn4xPTK4LpAH5F6mjkPefLwuPb7r+oCBuMFjFlGyp3fUmxXIIDt5GhApI\niLTGDJCwZ2znJBzQBlvaCekkEedGq3kTrfpFs0T8DFxc6kMtb8v16JJlSVBXmdAm\nKYeduqsD+n+YjBqS2+08N1DBcpcYkHKi11yZWQ3scWoTsQQ=\n-----END CERTIFICATE-----",
        "url": "http://example.com"
      },
      "queuePersistentContent": false,
      "returnFilterMatches": false,
      "rules": {
        "usernameFilterRule": {
          "action": "reject",
          "enabled": false
        },
        "whitelistFilterRules": {
          "disallowedPhrase": {
            "action": "allow"
          },
          "disallowedWord": {
            "action": "allow"
          }
        }
      },
      "storeContent": true,
      "urlRules": [
        {
          "score": 90,
          "action": "allow"
        },
        {
          "action": "allow",
          "score": 70
        },
        {
          "score": 40,
          "action": "allow"
        }
      ],
      "urlWhitelistTags": [
        "tag1"
      ],
      "userCheckOutMinutes": 10,
      "userFlagUserScoreAdjustment": -3
    },
    "name": "Chat",
    "notificationServers": [
      {
        "connectTimeout": 1000,
        "id": 21,
        "url": "http://chat.example.com/notification-handler",
        "readTimeout": 2000
      }
    ]
  }
}

2.2. Response

Table 3. Response Codes
Code Description

200

The request was successful. The response will contain a JSON body.

400

The request was invalid and/or malformed. The response will contain an Errors JSON Object with the specific errors.

401

You did not supply a valid Authorization header. The header was omitted or your API key was not valid. The response will be empty. See Authentication.

402

Your license has expired. The response will be empty. Contact sales@cleanspeak.com for assistance.

500

There was an internal error. A stack trace is provided and logged in the CleanSpeak log files. The response will be empty.

Table 4. Response Body

application [Object]

The Application object.

application.id [UUID]

The Id of the Application.

application.moderationConfiguration.alwaysKeepMatches [Boolean] Optional Defaults to false Available since 3.26.0

A flag to enable all matches to be kept. This is useful if keepAdditionalContentPercent is less than 1.0 so that you can ensure that you are always keeping content that was matched on.

application.moderationConfiguration.approvalCheckOutMinutes [Integer]

The number of minutes content is checked out for in the Approval Queue before it is automatically released to be eligible for another moderator to check out.

application.moderationConfiguration.approvalQueueSize [Integer]

The number of items checked out of the Approval Queue at a time for a moderator.

application.moderationConfiguration.archiveConfiguration [Object]

The archive configuration object.

application.moderationConfiguration.archiveConfiguration.enabled [Boolean]

Setting this value to true enables content deletion. This is false by default which means no content is deleted. If you’ll be sending in high volumes of content content deletion should be enabled. CleanSpeak is not designed to store content indefinitely.

application.moderationConfiguration.archiveConfiguration.storeDuration [Integer]

The number of units content should be kept. The unit value is determined by the storeTimeUnit.

application.moderationConfiguration.archiveConfiguration.storeOffsetDuration [Integer]

The number of units to be added to the storeDuration. The offset unit is determined by the storeOffsetTimeUnit.

application.moderationConfiguration.archiveConfiguration.storeOffsetTimeUnit [String]

The time unit for the offset. The possible values are:

  • minutes

  • hours

  • days

  • months

  • years

application.moderationConfiguration.archiveConfiguration.storeTimeUnit [String]

The time unit for the duration. The possible values are:

  • minutes

  • hours

  • days

  • months

  • years

application.moderationConfiguration.contentAlertCheckOutMinutes [Integer]

The number of minutes content is checked out for in the Alert Queue before it is automatically released to be eligible for another moderator to check out.

application.moderationConfiguration.contentAlertQueueSize [Integer]

The number of items checked out of the Alert Queue at a time for a moderator.

application.moderationConfiguration.contentDeletable [Boolean]

Set to true if you want the ability to delete content. Enabling this feature allows a moderator to delete content which in turn sends an event of type contentDelete to be consumed by the CleanSpeak event handler.

application.moderationConfiguration.contentEditable [Boolean]

Set to true if you want the ability to edit content. Enabling this feature allows a moderator to edit content which in turn sends an event of type contentEdit to be consumed by the CleanSpeak event handler.

application.moderationConfiguration.contentFlagAlertType [String]

By default when content is flagged a User alert is generated. Setting this to Content changes the behavior such that a Content alert is sent instead. The possible values are:

  • Content

  • User

application.moderationConfiguration.contentFlagUserScoreAdjustment [Integer]

The amount the User score is adjusted when content is flagged. This value may be a positive or negative integer.

application.moderationConfiguration.contentUserActionsEnabled [Boolean]

Set to true if you want user actions enabled. Enable this if you intend to allow moderators to action users, for example mute, ban, kick users. When disabled you will not be able to select this application as a target for a user action.

application.moderationConfiguration.defaultActionIsQueueForApproval [Boolean]

Set to true if you want content to be queued for approval when no filter rules are hit. This includes content that matched a rule set to allow.

For example, when this parameter is set to true and the content

  • did not match any filter rules, do queue for approval.

  • did not match any filter rules, but the moderate request parameter for moderation is set to generateAlert or generatesContentAlert, do not queue for approval.

  • did match one or more filters with an action other than allow, do not queue for approval.

This feature may be used way to ensure all content is reviewed in some fashion by a moderator.

application.moderationConfiguration.dictionaryTags [Array<String>] Available since 3.12.0

A list of dictionary tags to apply to moderation actions using this application.

Tags will cause the filter to throw out matches that exactly match dictionary words with any of the tags in this list.

application.moderationConfiguration.emailFilterMaxLength [Integer]

This parameter specifies the maximum length that a match can be in order to be considered an email. If the match length is greater than the maximum match length the match will be ignored.

application.moderationConfiguration.emailFilterSpacePenalty [Double]

This parameter specifies a penalty applied to the quality score if the match contains any spaces. For example, user@ example.com contains a space so the space penalty value will be added to the quality score. The email space penalty is applied once regardless of the number of spaces found in the match.

application.moderationConfiguration.emailOnAlerts [Boolean]

Set this parameter to true to email moderators for content alerts.

application.moderationConfiguration.emailOnContentFlagged [Boolean]

Set this parameter to true to email moderators when content is flagged.

application.moderationConfiguration.emailOnUserFlagged [Boolean]

Set this parameter to true to email moderators when users are flagged.

application.moderationConfiguration.emailRules [quality-filter-rule]>">[Array]

The email filter rules. You must supply exactly three rules. Each rule must provide a score value which is the inclusive cutoff score for an email match. The rules correspond to a High, Medium and Low quality filter rule. In the Management Interface these rules are referenced as High, Medium and Low.

For example, the following are the default email rules:

{
  "emailRules": [
    {
      "score": 90,
      "action": "allow"
    },
    {
      "score": 70,
      "action": "allow"
    },
    {
      "score": 40,
      "action": "allow"
    }
  ]
}

application.moderationConfiguration.filterRules [Array]

The list of blacklist filter rules.

application.moderationConfiguration.filterRules[x].tags [Array<String>]

The blacklist tags for this filter rule. A filter rule may have one or more tags.

application.moderationConfiguration.filterRules[x].locales [Array<String>]

The match locales. If this parameter is omitted the filter rule will apply to all locales. See Locales.

application.moderationConfiguration.filterRules[x].mildAction [String]

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

application.moderationConfiguration.filterRules[x].mildAlertType [String]

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

application.moderationConfiguration.filterRules[x].mildUserScoreAdjustment [String]

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.

application.moderationConfiguration.filterRules[x].mediumAction [String]

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

application.moderationConfiguration.filterRules[x].mediumAlertType [String]

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

application.moderationConfiguration.filterRules[x].mediumUserScoreAdjustment [String]

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.

application.moderationConfiguration.filterRules[x].highAction [String]

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

application.moderationConfiguration.filterRules[x].highAlertType [String]

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

application.moderationConfiguration.filterRules[x].highUserScoreAdjustment [String]

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.

application.moderationConfiguration.filterRules[x].severeAction [String]

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

application.moderationConfiguration.filterRules[x].severeAlertType [String]

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

application.moderationConfiguration.filterRules[x].severeUserScoreAdjustment [String]

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.

application.moderationConfiguration.ignorableCharacters [String] Available since 3.22.0

The list list of characters the filter can skip over to find a match.

Specifically, this feature will catch any blacklist word even if separated by a single character on this list. Example: SxMxUxRxF Note: only the same letter may be used to separate the characters throughout the word and only one ignored character in a row is permitted.

application.moderationConfiguration.imageConfiguration [Object]

The image moderation configuration object. This parameter and all nested parameters are only valid when imageOnly is set to true.

application.moderationConfiguration.imageConfiguration.commitDelay [Integer]

The number of seconds to wait before a moderation decision made from the enhanced image moderation queue is committed.

application.moderationConfiguration.imageConfiguration.darkMode [Boolean]

Set this parameter to 'false' to disable the dark mode theme when viewing the enhanced image moderation queue.

application.moderationConfiguration.imageConfiguration.defaultTimerDuration [Integer]

The number of seconds each image will be displayed in the queue before advancing to the next image when the queue is set to automatically advance without keyboard interaction. This value is the default value for this application for all moderators. A moderator may change this value for their own user preference.

application.moderationConfiguration.imageConfiguration.speedModerationLayout [Boolean]

Set this parameter to false to disable the enhanced image moderation queue layout and use the legacy mode.

application.moderationConfiguration.imageOnly [Boolean]

Set this parameter to true to enable this application for image only moderation. When this parameter is set to true the imageConfiguration parameters are used to provide additional configuration.

application.moderationConfiguration.keepAdditionalContentPercent [Float] Available since 3.26.0

A field that informs the filter how much content to keep beyond what is required. In situations where storage is impossible due to the database latency or load, this flag can dramatically reduce that load by cutting your unnecessary storage to zero. It is also useful to configure alwaysKeepMatches should you want to keep only content that matches.

imageFilterConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterNudityConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the nudity filter in the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterNudityConfiguration.partialNudityRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterNudityConfiguration.ignoredPartialNudityTags [Array<String>] Available since 3.28.0

A list of tags to ignore if the filter finds this specific kind of partial nudity.

application.moderationConfiguration.imageFilterConfiguration.mediaFilterNudityConfiguration.rawNudityRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterOffensiveConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable to the offensive filter in the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterOffensiveConfiguration.offensiveRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterOffensiveConfiguration.ignoredLabels [Array<String>] Available since 3.28.0

A list of labels to ignore if a matching offensive label is found in the content.

application.moderationConfiguration.imageFilterConfiguration.mediaFilterScamConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the scam filter in the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterScamConfiguration.scamRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterWADConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the Weapons, Alcohol, and Drugs filter in the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterWADConfiguration.alcoholRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterWADConfiguration.drugRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterWADConfiguration.weaponRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.mlFilterConfiguration.enabled [Boolean] optional Defaults to false Available since 4.0.0

A flag to enable Machine Learning.

application.moderationConfiguration.mlFilterConfiguration.locales [Array<String>] Available since 4.0.2

The selected locales will be sent to the Machine Learning engine to evaluate content for the selected models.

application.moderationConfiguration.mlFilterConfiguration.[model]Config.enabled [Boolean] optional Defaults to false Available since 4.0.0

A flag to enable a particular Machine Learning model. [model] will be 1 or more of the following values:

  • affinity - references shared interests, motivations or outlooks between the content author and another individual, group or entity

  • compassion - identifies with or shows concern, empathy, or support for the feelings/emotions of others

  • curiosity - attempts to clarify or ask follow-up questions to better understand another person or idea

  • identityAttack - negative or hateful comments targeting someone because of their identity

  • incoherent - Available since 4.1.0 - difficult to understand, nonsensical, may also pick up run-on sentences with no punctuation

  • insult - insulting, inflammatory, or negative comment towards a person or a group of people

  • nuance - incorporates multiple points of view in an attempt to provide a full picture or contribute useful detail and/or context

  • personalStory- includes a personal experience or story as a source of support for the statements made in the comment

  • profanity - swear words, curse words, or other obscene or profane language

  • reasoning - makes specific or well-reasoned points to provide a fuller understanding of the topic without disrespect or provocation

  • respect - shows deference or appreciation to others, or acknowledges the validity of another person

  • severeToxicity - very specific and volatile hate speech, usually referencing catch phrases of recognized hate groups

  • spam - Available since 4.1.0 - irrelevant and unsolicited commercial content

  • toxicity - a rude, disrespectful, or unreasonable comment that is likely to make people leave a discussion

  • threat - describes an intention to inflict pain, injury, or violence against an individual or group

  • unsubstantial - Available since 4.1.0 - trivial or short comments, e.g. lol, yes, ok

application.moderationConfiguration.mlFilterConfiguration.[model]Config.rules.mild [quality-filter-rule] optional Available since 4.0.0

See the enabled field for [model] values. This configures, for the mild level, the set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one).

application.moderationConfiguration.mlFilterConfiguration.[model]Config.rules.medium [quality-filter-rule] optional Available since 4.0.0

See the enabled field for [model] values. This configures, for the medium level, the set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one).

application.moderationConfiguration.mlFilterConfiguration.[model]Config.rules.high [quality-filter-rule] optional Available since 4.0.0

See the enabled field for [model] values. This configures, for the high level, the set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one).

application.moderationConfiguration.mlFilterConfiguration.[model]Config.rules.severe [quality-filter-rule] optional Available since 4.0.0

See the enabled field for [model] values. This configures, for the severe level, the set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one).

application.moderationConfiguration.videoFilterConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterNudityConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the nudity filter in the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterNudityConfiguration.partialNudityRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterNudityConfiguration.ignoredPartialNudityTags [Array<String>] Available since 3.28.0

A list of tags to ignore if the filter finds this specific kind of partial nudity.

application.moderationConfiguration.videoFilterConfiguration.mediaFilterNudityConfiguration.rawNudityRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterOffensiveConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable to the offensive filter in the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterOffensiveConfiguration.offensiveRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterOffensiveConfiguration.ignoredLabels [Array<String>] Available since 3.28.0

A list of labels to ignore if a matching offensive label is found in the content.

application.moderationConfiguration.videoFilterConfiguration.mediaFilterScamConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the scam filter in the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterScamConfiguration.scamRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterWADConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the Weapons, Alcohol, and Drugs filter in the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterWADConfiguration.alcoholRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterWADConfiguration.drugRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterWADConfiguration.weaponRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.noRuleUserScoreAdjustment [Integer]

This score adjustment is used when the content did not match any rules. This value may be a positive or negative integer.

This may be used to increase a user score based upon good behavior, i.e. sending in content that did not contain any profanity. In this use case, you would provide a positive value for the adjustment.

This adjustment will only affect the user score while it is below 0. Once the user score is raised to 0 this adjustment will be ignored.

application.moderationConfiguration.persistent [Boolean]

Set this parameter to true to indicate the content type is persistent, false indicates this content is transient.

Persistent content is defined as content that is likely displayed indefinitely. A user can go and look at this content in the future by browsing a forum or performing a content search. Examples of persistent content include forum posts, profile pictures, etc. Persist content can be edited, deleted and pre-approved.

Transient content is defined as content that is displayed for a short period of time and then is likely gone forever. Transient content is usually synonymous with chat. This content cannot be pre-approved, edited or deleted.

Please note that both transient and persistent content in this context are persisted to the database.

application.moderationConfiguration.phoneNumberFilterMaxLength [Integer]

This parameter specifies the maximum length that a match can be in order to be considered an phone number. If the match length is greater than the maximum match length the match will be ignored.

application.moderationConfiguration.phoneNumberFilterMinLength [Integer]

This parameter specifies the minimum length that a match can be in order to be considered a phone number. The default value covers most world wide phone number formats.

application.moderationConfiguration.phoneNumberFilterSeparatorPenalty [Double]

This parameter specifies a penalty that is applied to the quality score for a match if it contains any type of separator other than a dash or parenthesis. For example, 303;555;1234 contains two penalized separators so the separator penalty will be multiplied by the number of separators and added to the quality score.

application.moderationConfiguration.phoneNumberFilterSpacePenalty [Double]

This parameter specifies a penalty that is applied to the quality score for a match if it contains one or more spaces. For example, 303 555 1234 contains two spaces so the space penalty will be multiplied by the number of spaces and added to the quality score.

application.moderationConfiguration.phoneNumberFilterWordPenalty [Double]

This parameter specifies a penalty that is applied to the quality score for a match if it contains any words rather than digits. For example, three zero three 555 1234 contains three words so the word penalty will be multiplied by the number of words and added to the quality score.

application.moderationConfiguration.phoneNumberRules [Array<[quality-filter-rule]>]

The phone number filter rules. You must supply exactly three rules. Each rule must provide a score value which is the inclusive cutoff score for a phone number match. The rules correspond to a High, Medium and Low quality filter rule. In the Management Interface these rules are referenced as High, Medium and Low.

For example, the following are the default phone number rules:

{
  "phoneNumberRules": [
    {
      "score": 90,
      "action": "allow"
    },
    {
      "score": 70,
      "action": "allow"
    },
    {
      "score": 40,
      "action": "allow"
    }
  ]
}

applicaiton.moderationConfiguration.proxy.enabled [Boolean]

A flag to determine if this application can send proxy requests. If disabled, all other fields will be ignored and it will not be possible to use the /content/item/moderate/proxy endpoint with this application.

applicaiton.moderationConfiguration.proxy.url [String] Available since 3.29.0-RC.1

A destination url for the proxy to forward requests to. This is required if the proxy is enabled.

applicaiton.moderationConfiguration.proxy.connectTimeout [Integer] Available since 3.29.0-RC.1

A value that determines the maximum amount of time (in milliseconds) that CleanSpeak will wait for the connection to be established with the proxy service. If a connection takes longer than this then the request will result in a 400 on the /content/item/moderate/proxy endpoint.

applicaiton.moderationConfiguration.proxy.readTimeout [Integer] Optional Available since 3.29.0-RC.1

A value that determines the maximum amount of time (in milliseconds) that CleanSpeak will wait for the initial read of the request to begin.

applicaiton.moderationConfiguration.proxy.headers [Object] Available since 3.29.0-RC.1

An object of string keys to string values that will get encoded as headers on the proxy request.

applicaiton.moderationConfiguration.proxy.httpAuthenticationUsername [String] Available since 3.29.0-RC.1

A username to supply on the proxy request. Set this if you require http basic authentication.

applicaiton.moderationConfiguration.proxy.httpAuthenticationPassword [String] Available since 3.29.0-RC.1

A password to supply on the proxy request. Set this if you require http basic authentication.

applicaiton.moderationConfiguration.proxy.sslCertificate [String] Available since 3.29.0-RC.1

A pem encoded ssl certificate to present as authorization on the proxy request.

application.moderationConfiguration.queuePersistentContent [Boolean] Available since 3.29.0-RC.1

Set this to true in order to asynchronously store persistent content. This may improve performance but there is a potential for data loss if an outage occurs before all content is committed to the database. Please consult with CleanSpeak Support if you are unsure how to use this feature.

application.moderationConfiguration.replacementCharacter [String]

The character used during match replacement. If this value is set it will take precedence over replacementString.

application.moderationConfiguration.replacementString [String]

The string used during match replacement. If neither replacementString or replacementCharacter are defined the default replacement character * will be utilized.

application.moderationConfiguration.returnFilterMatches [Boolean] Available since 3.9.1

This parameter specifies if filter matches will be returned in the Moderate Content API response.

application.moderationConfiguration.rules [Object]

The rules object. This object contains the Username Filter and Whitelist Filter rules.

application.moderationConfiguration.storeContent [Boolean]

Set this parameter to true in order to store content in the database. In order to take advantage of many of the advanced CleanSpeak moderation features you’ll need to store content.

application.moderationConfiguration.unicodeFilterRule.action [String] Available since 3.22.0

The filter action for the unicode filter. Allowed options are allow or reject.

The unicode filter rejects content if it contains prohibited unicode ranges.

application.moderationConfiguration.unicodeFilterRule.data [String] Available since 3.22.0

The unicode filter configuration represented as a dsl of ranges.

The ranges are described as a string of lines that may contain * Empty lines * Comments (a line starting with #) * Unicode ranges (A unicode codepoint is of the form \u0000 or \u{0} (Json unicode notation)) Ex: \u0000-\u{F}

A special condition is that the final unicode range may be an open range meaning the second unicode point is omitted.

Note: The ranges are inclusive so \u0000-\u000F includes the character \u000F

Note 2: The provided config may change between versions.

application.moderationConfiguration.urlFilterMaxLength [Integer]

This parameter specifies the maximum length that a match can be in order to be considered a url. If the match length is greater than the maximum match length the match will be ignored.

application.moderationConfiguration.urlFilterSpacePenalty [Double]

This parameter specifies a penalty that is applied to the quality score for a match if it contains one or more spaces. For example, www .ex a m ple .com contains spaces so the space penalty will added to the quality score.

application.moderationConfiguration.urlRules [Array<[quality-filter-rule]>]

The url filter rules. You must supply exactly three rules. Each rule must provide a score value which is the inclusive cutoff score for a url match. The rules correspond to a High, Medium and Low quality filter rule. In the Management Interface these rules are referenced as High, Medium and Low.

For example, the following are the default url rules:

{
  "urlRules": [
    {
      "score": 90,
      "action": "allow"
    },
    {
      "score": 70,
      "action": "allow"
    },
    {
      "score": 40,
      "action": "allow"
    }
  ]
}

applicaiton.moderationConfiguration.urlWhitelistTags [Array<String>] Optional Defaults to empty array

A list of URL whitelist tag names that this application will use during moderation. The tags will include any whitelisted urls that are tagged with the same tag. Any whitelisted urls that are untagged are always used.

application.moderationConfiguration.userCheckOutMinutes [Integer]

The number of minutes a Content User is checked out for before it is automatically released to be eligible for another moderator to check out.

application.moderationConfiguration.userFlagUserScoreAdjustment [Integer]

The amount the User score is adjusted when the user is flagged. This value may be a positive or negative integer.

applicaiton.notificationServers [Array] Optional

A list of webhooks to use on an application. (This will create new webhooks every time)

Note: Notification Servers are now called Webhooks.

(See Handling Webhook Events for more details)

applicaiton.notificationServers[x].connectTimeout [Integer]

The maximum amount of time a server will take to try to connect in milliseconds.

application.notificationServers[x].readTimeout [Integer]

The maximum amount of time any read call will wait for data to flow.

application.notificationServers[x].description [String] Since 3.27.0

A description of the webhook and its purpose.

application.notificationServers[x].eventsEnabled[eventType] [Boolean] Since 3.27.0

A list of enabled event types for this webhook. If a value in this map is false, then it will not recieve events of that type. The possible values for eventType are as follows (each has a related section in Handling Events):

  • ContentAction

  • ContentApproval

  • ContentDelete

  • ContentEdit

  • FilterApproval

application.notificationServers[x].httpAuthenticationPassword [String] Optional

A password to supply on the event request.

application.notificationServers[x].httpAuthenticationUsername [String] Optional

A username to supply on the event request.

applicaiton.notificationServers[x].sslCertificate [String] Optional

An ssl client certificate to present on the event request.

application.notificationServers[x].url [String]

The url of a server listening for events.

Example Response JSON
{
  "application": {
    "id": "f81d4fae-7dec-11d0-a765-00a0c91e6bf6",
    "moderationConfiguration": {
      "alwaysKeepMatches": false,
      "approvalCheckOutMinutes": 10,
      "approvalQueueSize": 30,
      "archiveConfiguration": {
        "deleteOnly": true,
        "enabled": false
      },
      "contentAlertCheckOutMinutes": 10,
      "contentAlertQueueSize": 30,
      "contentDeletable": true,
      "contentEditable": true,
      "contentFlagAlertType": "User",
      "contentFlagUserScoreAdjustment": -3,
      "contentUserActionsEnabled": true,
      "ignorableCharacters": "qxz",
      "imageConfiguration": {
        "commitDelay": 45,
        "darkMode": true,
        "defaultTimerDuration": 2.0,
        "speedModerationLayout": true
      },
      "imageFilterConfiguration": {
        "enabled": true,
        "mediaFilterNudityConfiguration": {
          "enabled": true,
          "ignoredPartialNudityTags": [],
          "partialNudityRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "rawNudityRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterOffensiveConfiguration": {
          "enabled": true,
          "ignoredLabels": [],
          "offensiveRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterScamConfiguration": {
          "enabled": true,
          "scamRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterWADConfiguration": {
          "alcoholRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "drugRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "enabled": true,
          "weaponRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        }
      },
      "mlFilterConfiguration": {
        "affinityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "compassionConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "curiosityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "enabled": false,
        "locales": ["en"],
        "identityAttackConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 35
            },
            "medium": {
              "action": "allow",
              "score": 45
            },
            "high": {
              "action": "allow",
              "score": 55
            },
            "severe": {
              "action": "allow",
              "score": 61
            }
          }
        },
        "incoherentConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 74
            },
            "medium": {
              "action": "allow",
              "score": 84
            },
            "high": {
              "action": "allow",
              "score": 94
            },
            "severe": {
              "action": "allow",
              "score": 99
            }
          }
        },
        "insultConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 50
            },
            "medium": {
              "action": "allow",
              "score": 60
            },
            "high": {
              "action": "allow",
              "score": 70
            },
            "severe": {
              "action": "allow",
              "score": 80
            }
          }
        },
        "nuanceConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "personalStoryConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "profanityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 30
            },
            "medium": {
              "action": "allow",
              "score": 40
            },
            "high": {
              "action": "allow",
              "score": 50
            },
            "severe": {
              "action": "allow",
              "score": 60
            }
          }
        },
        "reasoningConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "respectConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "severeToxicityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 5
            },
            "medium": {
              "action": "allow",
              "score": 10
            },
            "high": {
              "action": "allow",
              "score": 20
            },
            "severe": {
              "action": "allow",
              "score": 25
            }
          }
        },
        "spamConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 70
            },
            "medium": {
              "action": "allow",
              "score": 80
            },
            "high": {
              "action": "allow",
              "score": 90
            },
            "severe": {
              "action": "allow",
              "score": 97
            }
          }
        },
        "threatConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "toxicityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 50
            },
            "medium": {
              "action": "allow",
              "score": 60
            },
            "high": {
              "action": "allow",
              "score": 70
            },
            "severe": {
              "action": "allow",
              "score": 79
            }
          }
        },
        "unsubstantialConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 79
            },
            "medium": {
              "action": "allow",
              "score": 79
            },
            "high": {
              "action": "allow",
              "score": 89
            },
            "severe": {
              "action": "allow",
              "score": 99
            }
          }
        }
      },
      "unicodeFilterRule": {
        "action": "allow"
      },
      "videoFilterConfiguration": {
        "enabled": true,
        "mediaFilterNudityConfiguration": {
          "enabled": true,
          "ignoredPartialNudityTags": [],
          "partialNudityRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "rawNudityRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterOffensiveConfiguration": {
          "enabled": true,
          "ignoredLabels": [],
          "offensiveRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterScamConfiguration": {
          "enabled": true,
          "scamRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterWADConfiguration": {
          "alcoholRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "drugRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "enabled": true,
          "weaponRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        }
      },
      "defaultActionIsQueueForApproval": false,
      "dictionaryTags": [
        "whitelistA"
      ],
      "emailOnAlerts": false,
      "emailOnContentFlagged": false,
      "emailOnEscalations": false,
      "emailOnUserFlagged": false,
      "emailRules": [
        {
          "action": "allow",
          "score": 90
        },
        {
          "score": 70,
          "action": "allow"
        },
        {
          "score": 40,
          "action": "allow"
        }
      ],
      "filterRules": [
        {
          "highAction": "authorOnly",
          "highAlertType": "User",
          "locales": [],
          "mediumAction": "allow",
          "mildAction": "allow",
          "severeAction": "reject",
          "severeAlertType": "User",
          "tags": [
            "Vulgarity"
          ]
        },
        {
          "highAction": "allow",
          "highAlertType": "User",
          "locales": [
            "en"
          ],
          "mediumAction": "allow",
          "mildAction": "allow",
          "severeAction": "authorOnly",
          "severeAlertType": "User",
          "tags": [
            "Bullying"
          ]
        }
      ],
      "imageOnly": false,
      "keepAdditionalContentPercent": 1.0,
      "persistent": true,
      "phoneNumberRules": [
        {
          "action": "allow",
          "score": 90,
          "userScoreAdjustment": -10
        },
        {
          "alertType": "Content",
          "userScoreAdjustment": -5,
          "score": 70,
          "action": "allow"
        },
        {
          "score": 40,
          "alertType": "User",
          "userScoreAdjustment": -1,
          "action": "allow"
        }
      ],
      "proxy": {
        "connectTimeout": 2000,
        "enabled": true,
        "headers": {
          "Authorization": "APIKEY",
          "X-SomeHeader": "HeaderValue"
        },
        "httpAuthenticationPassword": "pass",
        "httpAuthenticationUsername": "user",
        "readTimeout": 4000,
        "sslCertificate": "-----BEGIN CERTIFICATE-----\nMIIDTzCCArigAwIBAgIJAMA7XJzxYkPUMA0GCSqGSIb3DQEBBQUAMHkxCzAJBgNV\nBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGZGVudmVyMRIwEAYDVQQKEwlp\nbnZlcnNvZnQxEjAQBgNVBAMTCWxvY2FsaG9zdDEkMCIGCSqGSIb3DQEJARYVc3Vw\ncG9ydEBpbnZlcnNvZnQuY29tMB4XDTE0MDQxMDE5NTA1MFoXDTE0MDUxMDE5NTA1\nMFoweTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNPMQ8wDQYDVQQHEwZkZW52ZXIx\nEjAQBgNVBAoTCWludmVyc29mdDESMBAGA1UEAxMJbG9jYWxob3N0MSQwIgYJKoZI\nhvcNAQkBFhVzdXBwb3J0QGludmVyc29mdC5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD\ngY0AMIGJAoGBAMZ0AasrmL41BOGhUOr1WVOUah5styok4NjXMRCyJWc7VEyt2lRW\nyaAQeIsR1wgmLJbo7YSC8gY4E9xfiIUqTwHK5bvDuS1T2jwsrIf0jaxjcB+Janol\nvWeVgIUTv5xuzWTWtFEjxwHoum/Ur/T8bigmPhiXwCMJTuP25bSB9Ov5AgMBAAGj\ngd4wgdswHQYDVR0OBBYEFFOEqiRBZtc1vgnC8Zi5QEa6rTDdMIGrBgNVHSMEgaMw\ngaCAFFOEqiRBZtc1vgnC8Zi5QEa6rTDdoX2kezB5MQswCQYDVQQGEwJVUzELMAkG\nA1UECBMCQ08xDzANBgNVBAcTBmRlbnZlcjESMBAGA1UEChMJaW52ZXJzb2Z0MRIw\nEAYDVQQDEwlsb2NhbGhvc3QxJDAiBgkqhkiG9w0BCQEWFXN1cHBvcnRAaW52ZXJz\nb2Z0LmNvbYIJAMA7XJzxYkPUMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD\ngYEAwXVTn4xPTK4LpAH5F6mjkPefLwuPb7r+oCBuMFjFlGyp3fUmxXIIDt5GhApI\niLTGDJCwZ2znJBzQBlvaCekkEedGq3kTrfpFs0T8DFxc6kMtb8v16JJlSVBXmdAm\nKYeduqsD+n+YjBqS2+08N1DBcpcYkHKi11yZWQ3scWoTsQQ=\n-----END CERTIFICATE-----",
        "url": "http://example.com"
      },
      "queuePersistentContent": false,
      "returnFilterMatches": false,
      "rules": {
        "usernameFilterRule": {
          "action": "reject",
          "enabled": false
        },
        "whitelistFilterRules": {
          "disallowedPhrase": {
            "action": "allow"
          },
          "disallowedWord": {
            "action": "allow"
          }
        }
      },
      "storeContent": true,
      "urlRules": [
        {
          "score": 90,
          "action": "allow"
        },
        {
          "action": "allow",
          "score": 70
        },
        {
          "score": 40,
          "action": "allow"
        }
      ],
      "urlWhitelistTags": [
        "tag1"
      ],
      "userCheckOutMinutes": 10,
      "userFlagUserScoreAdjustment": -3
    },
    "name": "Chat",
    "notificationServers": [
      {
        "connectTimeout": 1000,
        "id": 21,
        "url": "http://chat.example.com/notification-handler",
        "readTimeout": 2000
      }
    ]
  }
}

3. Retrieve an Application

This API is used to retrieve an application and its configuration.

3.1. Request

Retrieve a single application by Id

URI (3.x, deprecated in 4.0.0)

GET /system/application/{applicationId}

URI (4.x)

GET /api/system/application/{applicationId}

Table 5. Request Parameters

applicationId [UUID] Required

The Id of the Application to retrieve.

Retrieve all applications

URI (3.x, deprecated in 4.0.0)

GET /system/application

URI (4.x)

GET /api/system/application

3.2. Response

Table 6. Response Codes
Code Description

200

The request was successful. The response will contain a JSON body.

400

The request was invalid and/or malformed. The response will contain an Errors JSON Object with the specific errors.

401

You did not supply a valid Authorization header. The header was omitted or your API key was not valid. The response will be empty. See Authentication.

402

Your license has expired. The response will be empty. Contact sales@cleanspeak.com for assistance.

404

The object you requested doesn’t exist. The response will be empty.

500

There was an internal error. A stack trace is provided and logged in the CleanSpeak log files. The response will be empty.

Table 7. Response Body

application [Object]

The Application object.

application.id [UUID]

The Id of the Application.

application.moderationConfiguration.alwaysKeepMatches [Boolean] Optional Defaults to false Available since 3.26.0

A flag to enable all matches to be kept. This is useful if keepAdditionalContentPercent is less than 1.0 so that you can ensure that you are always keeping content that was matched on.

application.moderationConfiguration.approvalCheckOutMinutes [Integer]

The number of minutes content is checked out for in the Approval Queue before it is automatically released to be eligible for another moderator to check out.

application.moderationConfiguration.approvalQueueSize [Integer]

The number of items checked out of the Approval Queue at a time for a moderator.

application.moderationConfiguration.archiveConfiguration [Object]

The archive configuration object.

application.moderationConfiguration.archiveConfiguration.enabled [Boolean]

Setting this value to true enables content deletion. This is false by default which means no content is deleted. If you’ll be sending in high volumes of content content deletion should be enabled. CleanSpeak is not designed to store content indefinitely.

application.moderationConfiguration.archiveConfiguration.storeDuration [Integer]

The number of units content should be kept. The unit value is determined by the storeTimeUnit.

application.moderationConfiguration.archiveConfiguration.storeOffsetDuration [Integer]

The number of units to be added to the storeDuration. The offset unit is determined by the storeOffsetTimeUnit.

application.moderationConfiguration.archiveConfiguration.storeOffsetTimeUnit [String]

The time unit for the offset. The possible values are:

  • minutes

  • hours

  • days

  • months

  • years

application.moderationConfiguration.archiveConfiguration.storeTimeUnit [String]

The time unit for the duration. The possible values are:

  • minutes

  • hours

  • days

  • months

  • years

application.moderationConfiguration.contentAlertCheckOutMinutes [Integer]

The number of minutes content is checked out for in the Alert Queue before it is automatically released to be eligible for another moderator to check out.

application.moderationConfiguration.contentAlertQueueSize [Integer]

The number of items checked out of the Alert Queue at a time for a moderator.

application.moderationConfiguration.contentDeletable [Boolean]

Set to true if you want the ability to delete content. Enabling this feature allows a moderator to delete content which in turn sends an event of type contentDelete to be consumed by the CleanSpeak event handler.

application.moderationConfiguration.contentEditable [Boolean]

Set to true if you want the ability to edit content. Enabling this feature allows a moderator to edit content which in turn sends an event of type contentEdit to be consumed by the CleanSpeak event handler.

application.moderationConfiguration.contentFlagAlertType [String]

By default when content is flagged a User alert is generated. Setting this to Content changes the behavior such that a Content alert is sent instead. The possible values are:

  • Content

  • User

application.moderationConfiguration.contentFlagUserScoreAdjustment [Integer]

The amount the User score is adjusted when content is flagged. This value may be a positive or negative integer.

application.moderationConfiguration.contentUserActionsEnabled [Boolean]

Set to true if you want user actions enabled. Enable this if you intend to allow moderators to action users, for example mute, ban, kick users. When disabled you will not be able to select this application as a target for a user action.

application.moderationConfiguration.defaultActionIsQueueForApproval [Boolean]

Set to true if you want content to be queued for approval when no filter rules are hit. This includes content that matched a rule set to allow.

For example, when this parameter is set to true and the content

  • did not match any filter rules, do queue for approval.

  • did not match any filter rules, but the moderate request parameter for moderation is set to generateAlert or generatesContentAlert, do not queue for approval.

  • did match one or more filters with an action other than allow, do not queue for approval.

This feature may be used way to ensure all content is reviewed in some fashion by a moderator.

application.moderationConfiguration.dictionaryTags [Array<String>] Available since 3.12.0

A list of dictionary tags to apply to moderation actions using this application.

Tags will cause the filter to throw out matches that exactly match dictionary words with any of the tags in this list.

application.moderationConfiguration.emailFilterMaxLength [Integer]

This parameter specifies the maximum length that a match can be in order to be considered an email. If the match length is greater than the maximum match length the match will be ignored.

application.moderationConfiguration.emailFilterSpacePenalty [Double]

This parameter specifies a penalty applied to the quality score if the match contains any spaces. For example, user@ example.com contains a space so the space penalty value will be added to the quality score. The email space penalty is applied once regardless of the number of spaces found in the match.

application.moderationConfiguration.emailOnAlerts [Boolean]

Set this parameter to true to email moderators for content alerts.

application.moderationConfiguration.emailOnContentFlagged [Boolean]

Set this parameter to true to email moderators when content is flagged.

application.moderationConfiguration.emailOnUserFlagged [Boolean]

Set this parameter to true to email moderators when users are flagged.

application.moderationConfiguration.emailRules [quality-filter-rule]>">[Array]

The email filter rules. You must supply exactly three rules. Each rule must provide a score value which is the inclusive cutoff score for an email match. The rules correspond to a High, Medium and Low quality filter rule. In the Management Interface these rules are referenced as High, Medium and Low.

For example, the following are the default email rules:

{
  "emailRules": [
    {
      "score": 90,
      "action": "allow"
    },
    {
      "score": 70,
      "action": "allow"
    },
    {
      "score": 40,
      "action": "allow"
    }
  ]
}

application.moderationConfiguration.filterRules [Array]

The list of blacklist filter rules.

application.moderationConfiguration.filterRules[x].tags [Array<String>]

The blacklist tags for this filter rule. A filter rule may have one or more tags.

application.moderationConfiguration.filterRules[x].locales [Array<String>]

The match locales. If this parameter is omitted the filter rule will apply to all locales. See Locales.

application.moderationConfiguration.filterRules[x].mildAction [String]

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

application.moderationConfiguration.filterRules[x].mildAlertType [String]

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

application.moderationConfiguration.filterRules[x].mildUserScoreAdjustment [String]

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.

application.moderationConfiguration.filterRules[x].mediumAction [String]

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

application.moderationConfiguration.filterRules[x].mediumAlertType [String]

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

application.moderationConfiguration.filterRules[x].mediumUserScoreAdjustment [String]

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.

application.moderationConfiguration.filterRules[x].highAction [String]

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

application.moderationConfiguration.filterRules[x].highAlertType [String]

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

application.moderationConfiguration.filterRules[x].highUserScoreAdjustment [String]

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.

application.moderationConfiguration.filterRules[x].severeAction [String]

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

application.moderationConfiguration.filterRules[x].severeAlertType [String]

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

application.moderationConfiguration.filterRules[x].severeUserScoreAdjustment [String]

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.

application.moderationConfiguration.ignorableCharacters [String] Available since 3.22.0

The list list of characters the filter can skip over to find a match.

Specifically, this feature will catch any blacklist word even if separated by a single character on this list. Example: SxMxUxRxF Note: only the same letter may be used to separate the characters throughout the word and only one ignored character in a row is permitted.

application.moderationConfiguration.imageConfiguration [Object]

The image moderation configuration object. This parameter and all nested parameters are only valid when imageOnly is set to true.

application.moderationConfiguration.imageConfiguration.commitDelay [Integer]

The number of seconds to wait before a moderation decision made from the enhanced image moderation queue is committed.

application.moderationConfiguration.imageConfiguration.darkMode [Boolean]

Set this parameter to 'false' to disable the dark mode theme when viewing the enhanced image moderation queue.

application.moderationConfiguration.imageConfiguration.defaultTimerDuration [Integer]

The number of seconds each image will be displayed in the queue before advancing to the next image when the queue is set to automatically advance without keyboard interaction. This value is the default value for this application for all moderators. A moderator may change this value for their own user preference.

application.moderationConfiguration.imageConfiguration.speedModerationLayout [Boolean]

Set this parameter to false to disable the enhanced image moderation queue layout and use the legacy mode.

application.moderationConfiguration.imageOnly [Boolean]

Set this parameter to true to enable this application for image only moderation. When this parameter is set to true the imageConfiguration parameters are used to provide additional configuration.

application.moderationConfiguration.keepAdditionalContentPercent [Float] Available since 3.26.0

A field that informs the filter how much content to keep beyond what is required. In situations where storage is impossible due to the database latency or load, this flag can dramatically reduce that load by cutting your unnecessary storage to zero. It is also useful to configure alwaysKeepMatches should you want to keep only content that matches.

imageFilterConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterNudityConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the nudity filter in the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterNudityConfiguration.partialNudityRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterNudityConfiguration.ignoredPartialNudityTags [Array<String>] Available since 3.28.0

A list of tags to ignore if the filter finds this specific kind of partial nudity.

application.moderationConfiguration.imageFilterConfiguration.mediaFilterNudityConfiguration.rawNudityRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterOffensiveConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable to the offensive filter in the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterOffensiveConfiguration.offensiveRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterOffensiveConfiguration.ignoredLabels [Array<String>] Available since 3.28.0

A list of labels to ignore if a matching offensive label is found in the content.

application.moderationConfiguration.imageFilterConfiguration.mediaFilterScamConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the scam filter in the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterScamConfiguration.scamRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterWADConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the Weapons, Alcohol, and Drugs filter in the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterWADConfiguration.alcoholRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterWADConfiguration.drugRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterWADConfiguration.weaponRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.mlFilterConfiguration.enabled [Boolean] optional Defaults to false Available since 4.0.0

A flag to enable Machine Learning.

application.moderationConfiguration.mlFilterConfiguration.locales [Array<String>] Available since 4.0.2

The selected locales will be sent to the Machine Learning engine to evaluate content for the selected models.

application.moderationConfiguration.mlFilterConfiguration.[model]Config.enabled [Boolean] optional Defaults to false Available since 4.0.0

A flag to enable a particular Machine Learning model. [model] will be 1 or more of the following values:

  • affinity - references shared interests, motivations or outlooks between the content author and another individual, group or entity

  • compassion - identifies with or shows concern, empathy, or support for the feelings/emotions of others

  • curiosity - attempts to clarify or ask follow-up questions to better understand another person or idea

  • identityAttack - negative or hateful comments targeting someone because of their identity

  • incoherent - Available since 4.1.0 - difficult to understand, nonsensical, may also pick up run-on sentences with no punctuation

  • insult - insulting, inflammatory, or negative comment towards a person or a group of people

  • nuance - incorporates multiple points of view in an attempt to provide a full picture or contribute useful detail and/or context

  • personalStory- includes a personal experience or story as a source of support for the statements made in the comment

  • profanity - swear words, curse words, or other obscene or profane language

  • reasoning - makes specific or well-reasoned points to provide a fuller understanding of the topic without disrespect or provocation

  • respect - shows deference or appreciation to others, or acknowledges the validity of another person

  • severeToxicity - very specific and volatile hate speech, usually referencing catch phrases of recognized hate groups

  • spam - Available since 4.1.0 - irrelevant and unsolicited commercial content

  • toxicity - a rude, disrespectful, or unreasonable comment that is likely to make people leave a discussion

  • threat - describes an intention to inflict pain, injury, or violence against an individual or group

  • unsubstantial - Available since 4.1.0 - trivial or short comments, e.g. lol, yes, ok

application.moderationConfiguration.mlFilterConfiguration.[model]Config.rules.mild [quality-filter-rule] optional Available since 4.0.0

See the enabled field for [model] values. This configures, for the mild level, the set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one).

application.moderationConfiguration.mlFilterConfiguration.[model]Config.rules.medium [quality-filter-rule] optional Available since 4.0.0

See the enabled field for [model] values. This configures, for the medium level, the set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one).

application.moderationConfiguration.mlFilterConfiguration.[model]Config.rules.high [quality-filter-rule] optional Available since 4.0.0

See the enabled field for [model] values. This configures, for the high level, the set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one).

application.moderationConfiguration.mlFilterConfiguration.[model]Config.rules.severe [quality-filter-rule] optional Available since 4.0.0

See the enabled field for [model] values. This configures, for the severe level, the set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one).

application.moderationConfiguration.videoFilterConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterNudityConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the nudity filter in the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterNudityConfiguration.partialNudityRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterNudityConfiguration.ignoredPartialNudityTags [Array<String>] Available since 3.28.0

A list of tags to ignore if the filter finds this specific kind of partial nudity.

application.moderationConfiguration.videoFilterConfiguration.mediaFilterNudityConfiguration.rawNudityRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterOffensiveConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable to the offensive filter in the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterOffensiveConfiguration.offensiveRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterOffensiveConfiguration.ignoredLabels [Array<String>] Available since 3.28.0

A list of labels to ignore if a matching offensive label is found in the content.

application.moderationConfiguration.videoFilterConfiguration.mediaFilterScamConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the scam filter in the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterScamConfiguration.scamRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterWADConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the Weapons, Alcohol, and Drugs filter in the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterWADConfiguration.alcoholRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterWADConfiguration.drugRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterWADConfiguration.weaponRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.noRuleUserScoreAdjustment [Integer]

This score adjustment is used when the content did not match any rules. This value may be a positive or negative integer.

This may be used to increase a user score based upon good behavior, i.e. sending in content that did not contain any profanity. In this use case, you would provide a positive value for the adjustment.

This adjustment will only affect the user score while it is below 0. Once the user score is raised to 0 this adjustment will be ignored.

application.moderationConfiguration.persistent [Boolean]

Set this parameter to true to indicate the content type is persistent, false indicates this content is transient.

Persistent content is defined as content that is likely displayed indefinitely. A user can go and look at this content in the future by browsing a forum or performing a content search. Examples of persistent content include forum posts, profile pictures, etc. Persist content can be edited, deleted and pre-approved.

Transient content is defined as content that is displayed for a short period of time and then is likely gone forever. Transient content is usually synonymous with chat. This content cannot be pre-approved, edited or deleted.

Please note that both transient and persistent content in this context are persisted to the database.

application.moderationConfiguration.phoneNumberFilterMaxLength [Integer]

This parameter specifies the maximum length that a match can be in order to be considered an phone number. If the match length is greater than the maximum match length the match will be ignored.

application.moderationConfiguration.phoneNumberFilterMinLength [Integer]

This parameter specifies the minimum length that a match can be in order to be considered a phone number. The default value covers most world wide phone number formats.

application.moderationConfiguration.phoneNumberFilterSeparatorPenalty [Double]

This parameter specifies a penalty that is applied to the quality score for a match if it contains any type of separator other than a dash or parenthesis. For example, 303;555;1234 contains two penalized separators so the separator penalty will be multiplied by the number of separators and added to the quality score.

application.moderationConfiguration.phoneNumberFilterSpacePenalty [Double]

This parameter specifies a penalty that is applied to the quality score for a match if it contains one or more spaces. For example, 303 555 1234 contains two spaces so the space penalty will be multiplied by the number of spaces and added to the quality score.

application.moderationConfiguration.phoneNumberFilterWordPenalty [Double]

This parameter specifies a penalty that is applied to the quality score for a match if it contains any words rather than digits. For example, three zero three 555 1234 contains three words so the word penalty will be multiplied by the number of words and added to the quality score.

application.moderationConfiguration.phoneNumberRules [Array<[quality-filter-rule]>]

The phone number filter rules. You must supply exactly three rules. Each rule must provide a score value which is the inclusive cutoff score for a phone number match. The rules correspond to a High, Medium and Low quality filter rule. In the Management Interface these rules are referenced as High, Medium and Low.

For example, the following are the default phone number rules:

{
  "phoneNumberRules": [
    {
      "score": 90,
      "action": "allow"
    },
    {
      "score": 70,
      "action": "allow"
    },
    {
      "score": 40,
      "action": "allow"
    }
  ]
}

applicaiton.moderationConfiguration.proxy.enabled [Boolean]

A flag to determine if this application can send proxy requests. If disabled, all other fields will be ignored and it will not be possible to use the /content/item/moderate/proxy endpoint with this application.

applicaiton.moderationConfiguration.proxy.url [String] Available since 3.29.0-RC.1

A destination url for the proxy to forward requests to. This is required if the proxy is enabled.

applicaiton.moderationConfiguration.proxy.connectTimeout [Integer] Available since 3.29.0-RC.1

A value that determines the maximum amount of time (in milliseconds) that CleanSpeak will wait for the connection to be established with the proxy service. If a connection takes longer than this then the request will result in a 400 on the /content/item/moderate/proxy endpoint.

applicaiton.moderationConfiguration.proxy.readTimeout [Integer] Optional Available since 3.29.0-RC.1

A value that determines the maximum amount of time (in milliseconds) that CleanSpeak will wait for the initial read of the request to begin.

applicaiton.moderationConfiguration.proxy.headers [Object] Available since 3.29.0-RC.1

An object of string keys to string values that will get encoded as headers on the proxy request.

applicaiton.moderationConfiguration.proxy.httpAuthenticationUsername [String] Available since 3.29.0-RC.1

A username to supply on the proxy request. Set this if you require http basic authentication.

applicaiton.moderationConfiguration.proxy.httpAuthenticationPassword [String] Available since 3.29.0-RC.1

A password to supply on the proxy request. Set this if you require http basic authentication.

applicaiton.moderationConfiguration.proxy.sslCertificate [String] Available since 3.29.0-RC.1

A pem encoded ssl certificate to present as authorization on the proxy request.

application.moderationConfiguration.queuePersistentContent [Boolean] Available since 3.29.0-RC.1

Set this to true in order to asynchronously store persistent content. This may improve performance but there is a potential for data loss if an outage occurs before all content is committed to the database. Please consult with CleanSpeak Support if you are unsure how to use this feature.

application.moderationConfiguration.replacementCharacter [String]

The character used during match replacement. If this value is set it will take precedence over replacementString.

application.moderationConfiguration.replacementString [String]

The string used during match replacement. If neither replacementString or replacementCharacter are defined the default replacement character * will be utilized.

application.moderationConfiguration.returnFilterMatches [Boolean] Available since 3.9.1

This parameter specifies if filter matches will be returned in the Moderate Content API response.

application.moderationConfiguration.rules [Object]

The rules object. This object contains the Username Filter and Whitelist Filter rules.

application.moderationConfiguration.storeContent [Boolean]

Set this parameter to true in order to store content in the database. In order to take advantage of many of the advanced CleanSpeak moderation features you’ll need to store content.

application.moderationConfiguration.unicodeFilterRule.action [String] Available since 3.22.0

The filter action for the unicode filter. Allowed options are allow or reject.

The unicode filter rejects content if it contains prohibited unicode ranges.

application.moderationConfiguration.unicodeFilterRule.data [String] Available since 3.22.0

The unicode filter configuration represented as a dsl of ranges.

The ranges are described as a string of lines that may contain * Empty lines * Comments (a line starting with #) * Unicode ranges (A unicode codepoint is of the form \u0000 or \u{0} (Json unicode notation)) Ex: \u0000-\u{F}

A special condition is that the final unicode range may be an open range meaning the second unicode point is omitted.

Note: The ranges are inclusive so \u0000-\u000F includes the character \u000F

Note 2: The provided config may change between versions.

application.moderationConfiguration.urlFilterMaxLength [Integer]

This parameter specifies the maximum length that a match can be in order to be considered a url. If the match length is greater than the maximum match length the match will be ignored.

application.moderationConfiguration.urlFilterSpacePenalty [Double]

This parameter specifies a penalty that is applied to the quality score for a match if it contains one or more spaces. For example, www .ex a m ple .com contains spaces so the space penalty will added to the quality score.

application.moderationConfiguration.urlRules [Array<[quality-filter-rule]>]

The url filter rules. You must supply exactly three rules. Each rule must provide a score value which is the inclusive cutoff score for a url match. The rules correspond to a High, Medium and Low quality filter rule. In the Management Interface these rules are referenced as High, Medium and Low.

For example, the following are the default url rules:

{
  "urlRules": [
    {
      "score": 90,
      "action": "allow"
    },
    {
      "score": 70,
      "action": "allow"
    },
    {
      "score": 40,
      "action": "allow"
    }
  ]
}

applicaiton.moderationConfiguration.urlWhitelistTags [Array<String>] Optional Defaults to empty array

A list of URL whitelist tag names that this application will use during moderation. The tags will include any whitelisted urls that are tagged with the same tag. Any whitelisted urls that are untagged are always used.

application.moderationConfiguration.userCheckOutMinutes [Integer]

The number of minutes a Content User is checked out for before it is automatically released to be eligible for another moderator to check out.

application.moderationConfiguration.userFlagUserScoreAdjustment [Integer]

The amount the User score is adjusted when the user is flagged. This value may be a positive or negative integer.

applicaiton.notificationServers [Array] Optional

A list of webhooks to use on an application. (This will create new webhooks every time)

Note: Notification Servers are now called Webhooks.

(See Handling Webhook Events for more details)

applicaiton.notificationServers[x].connectTimeout [Integer]

The maximum amount of time a server will take to try to connect in milliseconds.

application.notificationServers[x].readTimeout [Integer]

The maximum amount of time any read call will wait for data to flow.

application.notificationServers[x].description [String] Since 3.27.0

A description of the webhook and its purpose.

application.notificationServers[x].eventsEnabled[eventType] [Boolean] Since 3.27.0

A list of enabled event types for this webhook. If a value in this map is false, then it will not recieve events of that type. The possible values for eventType are as follows (each has a related section in Handling Events):

  • ContentAction

  • ContentApproval

  • ContentDelete

  • ContentEdit

  • FilterApproval

application.notificationServers[x].httpAuthenticationPassword [String] Optional

A password to supply on the event request.

application.notificationServers[x].httpAuthenticationUsername [String] Optional

A username to supply on the event request.

applicaiton.notificationServers[x].sslCertificate [String] Optional

An ssl client certificate to present on the event request.

application.notificationServers[x].url [String]

The url of a server listening for events.

Example Response JSON
{
  "application": {
    "id": "f81d4fae-7dec-11d0-a765-00a0c91e6bf6",
    "moderationConfiguration": {
      "alwaysKeepMatches": false,
      "approvalCheckOutMinutes": 10,
      "approvalQueueSize": 30,
      "archiveConfiguration": {
        "deleteOnly": true,
        "enabled": false
      },
      "contentAlertCheckOutMinutes": 10,
      "contentAlertQueueSize": 30,
      "contentDeletable": true,
      "contentEditable": true,
      "contentFlagAlertType": "User",
      "contentFlagUserScoreAdjustment": -3,
      "contentUserActionsEnabled": true,
      "ignorableCharacters": "qxz",
      "imageConfiguration": {
        "commitDelay": 45,
        "darkMode": true,
        "defaultTimerDuration": 2.0,
        "speedModerationLayout": true
      },
      "imageFilterConfiguration": {
        "enabled": true,
        "mediaFilterNudityConfiguration": {
          "enabled": true,
          "ignoredPartialNudityTags": [],
          "partialNudityRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "rawNudityRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterOffensiveConfiguration": {
          "enabled": true,
          "ignoredLabels": [],
          "offensiveRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterScamConfiguration": {
          "enabled": true,
          "scamRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterWADConfiguration": {
          "alcoholRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "drugRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "enabled": true,
          "weaponRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        }
      },
      "mlFilterConfiguration": {
        "affinityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "compassionConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "curiosityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "enabled": false,
        "locales": ["en"],
        "identityAttackConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 35
            },
            "medium": {
              "action": "allow",
              "score": 45
            },
            "high": {
              "action": "allow",
              "score": 55
            },
            "severe": {
              "action": "allow",
              "score": 61
            }
          }
        },
        "incoherentConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 74
            },
            "medium": {
              "action": "allow",
              "score": 84
            },
            "high": {
              "action": "allow",
              "score": 94
            },
            "severe": {
              "action": "allow",
              "score": 99
            }
          }
        },
        "insultConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 50
            },
            "medium": {
              "action": "allow",
              "score": 60
            },
            "high": {
              "action": "allow",
              "score": 70
            },
            "severe": {
              "action": "allow",
              "score": 80
            }
          }
        },
        "nuanceConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "personalStoryConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "profanityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 30
            },
            "medium": {
              "action": "allow",
              "score": 40
            },
            "high": {
              "action": "allow",
              "score": 50
            },
            "severe": {
              "action": "allow",
              "score": 60
            }
          }
        },
        "reasoningConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "respectConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "severeToxicityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 5
            },
            "medium": {
              "action": "allow",
              "score": 10
            },
            "high": {
              "action": "allow",
              "score": 20
            },
            "severe": {
              "action": "allow",
              "score": 25
            }
          }
        },
        "spamConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 70
            },
            "medium": {
              "action": "allow",
              "score": 80
            },
            "high": {
              "action": "allow",
              "score": 90
            },
            "severe": {
              "action": "allow",
              "score": 97
            }
          }
        },
        "threatConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "toxicityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 50
            },
            "medium": {
              "action": "allow",
              "score": 60
            },
            "high": {
              "action": "allow",
              "score": 70
            },
            "severe": {
              "action": "allow",
              "score": 79
            }
          }
        },
        "unsubstantialConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 79
            },
            "medium": {
              "action": "allow",
              "score": 79
            },
            "high": {
              "action": "allow",
              "score": 89
            },
            "severe": {
              "action": "allow",
              "score": 99
            }
          }
        }
      },
      "unicodeFilterRule": {
        "action": "allow"
      },
      "videoFilterConfiguration": {
        "enabled": true,
        "mediaFilterNudityConfiguration": {
          "enabled": true,
          "ignoredPartialNudityTags": [],
          "partialNudityRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "rawNudityRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterOffensiveConfiguration": {
          "enabled": true,
          "ignoredLabels": [],
          "offensiveRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterScamConfiguration": {
          "enabled": true,
          "scamRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterWADConfiguration": {
          "alcoholRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "drugRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "enabled": true,
          "weaponRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        }
      },
      "defaultActionIsQueueForApproval": false,
      "dictionaryTags": [
        "whitelistA"
      ],
      "emailOnAlerts": false,
      "emailOnContentFlagged": false,
      "emailOnEscalations": false,
      "emailOnUserFlagged": false,
      "emailRules": [
        {
          "action": "allow",
          "score": 90
        },
        {
          "score": 70,
          "action": "allow"
        },
        {
          "score": 40,
          "action": "allow"
        }
      ],
      "filterRules": [
        {
          "highAction": "authorOnly",
          "highAlertType": "User",
          "locales": [],
          "mediumAction": "allow",
          "mildAction": "allow",
          "severeAction": "reject",
          "severeAlertType": "User",
          "tags": [
            "Vulgarity"
          ]
        },
        {
          "highAction": "allow",
          "highAlertType": "User",
          "locales": [
            "en"
          ],
          "mediumAction": "allow",
          "mildAction": "allow",
          "severeAction": "authorOnly",
          "severeAlertType": "User",
          "tags": [
            "Bullying"
          ]
        }
      ],
      "imageOnly": false,
      "keepAdditionalContentPercent": 1.0,
      "persistent": true,
      "phoneNumberRules": [
        {
          "action": "allow",
          "score": 90,
          "userScoreAdjustment": -10
        },
        {
          "alertType": "Content",
          "userScoreAdjustment": -5,
          "score": 70,
          "action": "allow"
        },
        {
          "score": 40,
          "alertType": "User",
          "userScoreAdjustment": -1,
          "action": "allow"
        }
      ],
      "proxy": {
        "connectTimeout": 2000,
        "enabled": true,
        "headers": {
          "Authorization": "APIKEY",
          "X-SomeHeader": "HeaderValue"
        },
        "httpAuthenticationPassword": "pass",
        "httpAuthenticationUsername": "user",
        "readTimeout": 4000,
        "sslCertificate": "-----BEGIN CERTIFICATE-----\nMIIDTzCCArigAwIBAgIJAMA7XJzxYkPUMA0GCSqGSIb3DQEBBQUAMHkxCzAJBgNV\nBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGZGVudmVyMRIwEAYDVQQKEwlp\nbnZlcnNvZnQxEjAQBgNVBAMTCWxvY2FsaG9zdDEkMCIGCSqGSIb3DQEJARYVc3Vw\ncG9ydEBpbnZlcnNvZnQuY29tMB4XDTE0MDQxMDE5NTA1MFoXDTE0MDUxMDE5NTA1\nMFoweTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNPMQ8wDQYDVQQHEwZkZW52ZXIx\nEjAQBgNVBAoTCWludmVyc29mdDESMBAGA1UEAxMJbG9jYWxob3N0MSQwIgYJKoZI\nhvcNAQkBFhVzdXBwb3J0QGludmVyc29mdC5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD\ngY0AMIGJAoGBAMZ0AasrmL41BOGhUOr1WVOUah5styok4NjXMRCyJWc7VEyt2lRW\nyaAQeIsR1wgmLJbo7YSC8gY4E9xfiIUqTwHK5bvDuS1T2jwsrIf0jaxjcB+Janol\nvWeVgIUTv5xuzWTWtFEjxwHoum/Ur/T8bigmPhiXwCMJTuP25bSB9Ov5AgMBAAGj\ngd4wgdswHQYDVR0OBBYEFFOEqiRBZtc1vgnC8Zi5QEa6rTDdMIGrBgNVHSMEgaMw\ngaCAFFOEqiRBZtc1vgnC8Zi5QEa6rTDdoX2kezB5MQswCQYDVQQGEwJVUzELMAkG\nA1UECBMCQ08xDzANBgNVBAcTBmRlbnZlcjESMBAGA1UEChMJaW52ZXJzb2Z0MRIw\nEAYDVQQDEwlsb2NhbGhvc3QxJDAiBgkqhkiG9w0BCQEWFXN1cHBvcnRAaW52ZXJz\nb2Z0LmNvbYIJAMA7XJzxYkPUMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD\ngYEAwXVTn4xPTK4LpAH5F6mjkPefLwuPb7r+oCBuMFjFlGyp3fUmxXIIDt5GhApI\niLTGDJCwZ2znJBzQBlvaCekkEedGq3kTrfpFs0T8DFxc6kMtb8v16JJlSVBXmdAm\nKYeduqsD+n+YjBqS2+08N1DBcpcYkHKi11yZWQ3scWoTsQQ=\n-----END CERTIFICATE-----",
        "url": "http://example.com"
      },
      "queuePersistentContent": false,
      "returnFilterMatches": false,
      "rules": {
        "usernameFilterRule": {
          "action": "reject",
          "enabled": false
        },
        "whitelistFilterRules": {
          "disallowedPhrase": {
            "action": "allow"
          },
          "disallowedWord": {
            "action": "allow"
          }
        }
      },
      "storeContent": true,
      "urlRules": [
        {
          "score": 90,
          "action": "allow"
        },
        {
          "action": "allow",
          "score": 70
        },
        {
          "score": 40,
          "action": "allow"
        }
      ],
      "urlWhitelistTags": [
        "tag1"
      ],
      "userCheckOutMinutes": 10,
      "userFlagUserScoreAdjustment": -3
    },
    "name": "Chat",
    "notificationServers": [
      {
        "connectTimeout": 1000,
        "id": 21,
        "url": "http://chat.example.com/notification-handler",
        "readTimeout": 2000
      }
    ]
  }
}

4. Update an Application

This API is used to update an application.

4.1. Request

URI (3.x, deprecated in 4.0.0)

PUT /system/application/{applicationId}

URI (4.x)

PUT /api/system/application/{applicationId}

[cols="3a,7a"]
Table 8. Request Parameters

applicationId [UUID] Required

The Id of the Application to update.

Table 9. Request Body

application [Object] Required

The Application object.

application.moderationConfiguration.alwaysKeepMatches [Boolean] Optional Defaults to false Available since 3.26.0

A flag to enable all matches to be kept. This is useful if keepAdditionalContentPercent is less than 1.0 so that you can ensure that you are always keeping content that was matched on.

application.moderationConfiguration.approvalCheckOutMinutes [Integer] Optional defaults to 10

The number of minutes content is checked out for in the Approval Queue before it is automatically released to be eligible for another moderator to check out.

application.moderationConfiguration.approvalQueueSize [Integer] Optional defaults to 30

The number of items checked out of the Approval Queue at a time for a moderator.

application.moderationConfiguration.archiveConfiguration [Object] Optional

The archive configuration object.

application.moderationConfiguration.archiveConfiguration.enabled [Boolean] Optional defaults to false

Setting this value to true enables content deletion. This is false by default which means no content is deleted. If you’ll be sending in high volumes of content content deletion should be enabled. CleanSpeak is not designed to store content indefinitely.

application.moderationConfiguration.archiveConfiguration.storeDuration [Integer] Required

The number of units content should be kept. The unit value is determined by the storeTimeUnit.

application.moderationConfiguration.archiveConfiguration.storeOffsetDuration [Integer] Required

The number of units to be added to the storeDuration. The offset unit is determined by the storeOffsetTimeUnit.

application.moderationConfiguration.archiveConfiguration.storeOffsetTimeUnit [String] Required

The time unit for the offset. The possible values are:

  • minutes

  • hours

  • days

  • months

  • years

application.moderationConfiguration.archiveConfiguration.storeTimeUnit [String] Required

The time unit for the duration. The possible values are:

  • minutes

  • hours

  • days

  • months

  • years

application.moderationConfiguration.contentAlertCheckOutMinutes [Integer] Optional defaults to 10

The number of minutes content is checked out for in the Alert Queue before it is automatically released to be eligible for another moderator to check out.

application.moderationConfiguration.contentAlertQueueSize [Integer] Optional defaults to 30

The number of items checked out of the Alert Queue at a time for a moderator.

application.moderationConfiguration.contentDeletable [Boolean] Optional defaults to false

Set to true if you want the ability to delete content. Enabling this feature allows a moderator to delete content which in turn sends an event of type contentDelete to be consumed by the CleanSpeak event handler.

application.moderationConfiguration.contentEditable [Boolean] Optional defaults to false

Set to true if you want the ability to edit content. Enabling this feature allows a moderator to edit content which in turn sends an event of type contentEdit to be consumed by the CleanSpeak event handler.

application.moderationConfiguration.contentFlagAlertType [String] Optional defaults to User

By default when content is flagged a User alert is generated. Setting this to Content changes the behavior such that a Content alert is sent instead. The possible values are:

  • Content

  • User

application.moderationConfiguration.contentFlagUserScoreAdjustment [Integer] Optional

The amount the User score is adjusted when content is flagged. This value may be a positive or negative integer.

application.moderationConfiguration.contentUserActionsEnabled [Boolean] Optional defaults to false

Set to true if you want user actions enabled. Enable this if you intend to allow moderators to action users, for example mute, ban, kick users. When disabled you will not be able to select this application as a target for a user action.

application.moderationConfiguration.defaultActionIsQueueForApproval [Boolean] Optional defaults to false

Set to true if you want content to be queued for approval when no filter rules are hit. This includes content that matched a rule set to allow.

For example, when this parameter is set to true and the content

  • did not match any filter rules, do queue for approval.

  • did not match any filter rules, but the moderate request parameter for moderation is set to generateAlert or generatesContentAlert, do not queue for approval.

  • did match one or more filters with an action other than allow, do not queue for approval.

This feature may be used way to ensure all content is reviewed in some fashion by a moderator.

application.moderationConfiguration.dictionaryTags [Array<String>] Optional Available since 3.12.0

A list of dictionary tags to apply to moderation actions using this application.

Tags will cause the filter to throw out matches that exactly match dictionary words with any of the tags in this list.

application.moderationConfiguration.emailFilterMaxLength [Integer] Optional defaults to 50

This parameter specifies the maximum length that a match can be in order to be considered an email. If the match length is greater than the maximum match length the match will be ignored.

application.moderationConfiguration.emailFilterSpacePenalty [Double] Optional defaults to -0.05

This parameter specifies a penalty applied to the quality score if the match contains any spaces. For example, user@ example.com contains a space so the space penalty value will be added to the quality score. The email space penalty is applied once regardless of the number of spaces found in the match.

application.moderationConfiguration.emailOnAlerts [Boolean] Optional defaults to false

Set this parameter to true to email moderators for content alerts.

application.moderationConfiguration.emailOnContentFlagged [Boolean] Optional defaults to false

Set this parameter to true to email moderators when content is flagged.

application.moderationConfiguration.emailOnUserFlagged [Boolean] Optional defaults to false

Set this parameter to true to email moderators when users are flagged.

application.moderationConfiguration.emailRules [Array<[quality-filter-rule]>] Optional

The email filter rules. You must supply exactly three rules. Each rule must provide a score value which is the inclusive cutoff score for an email match. The rules correspond to a High, Medium and Low quality filter rule. In the Management Interface these rules are referenced as High, Medium and Low.

For example, the following are the default email rules:

{
  "emailRules": [
    {
      "score": 90,
      "action": "allow"
    },
    {
      "score": 70,
      "action": "allow"
    },
    {
      "score": 40,
      "action": "allow"
    }
  ]
}

application.moderationConfiguration.filterRules [Array] Optional

The list of blacklist filter rules.

application.moderationConfiguration.filterRules[x].tags [Array<String>] Required

The blacklist tags for this filter rule. A filter rule may have one or more tags.

application.moderationConfiguration.filterRules[x].locales [Array<String>] Optional

The match locales. If this parameter is omitted the filter rule will apply to all locales. See Locales.

application.moderationConfiguration.filterRules[x].mildAction [String] Required

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

application.moderationConfiguration.filterRules[x].mildAlertType [String] Optional

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

application.moderationConfiguration.filterRules[x].mildUserScoreAdjustment [String] Optional

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.

application.moderationConfiguration.filterRules[x].mediumAction [String] Required

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

application.moderationConfiguration.filterRules[x].mediumAlertType [String] Optional

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

application.moderationConfiguration.filterRules[x].mediumUserScoreAdjustment [String] Optional

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.

application.moderationConfiguration.filterRules[x].highAction [String] Required

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

application.moderationConfiguration.filterRules[x].highAlertType [String] Optional

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

application.moderationConfiguration.filterRules[x].highUserScoreAdjustment [String] Optional

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.

application.moderationConfiguration.filterRules[x].severeAction [String] Required

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

application.moderationConfiguration.filterRules[x].severeAlertType [String] Optional

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

application.moderationConfiguration.filterRules[x].severeUserScoreAdjustment [String] Optional

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.

application.moderationConfiguration.ignorableCharacters [String] Optional Defaults to "qxz" Available since 3.22.0

Set this parameter to a list of characters the filter can skip over to find a match. Only the letters a through z are permitted.

Specifically, this feature will catch any blacklist word even if separated by a single character on this list. Example: SxMxUxRxF Note: only the same letter may be used to separate the characters throughout the word and only one ignored character in a row is permitted.

application.moderationConfiguration.imageConfiguration [Object] Optional

The image moderation configuration object. This parameter and all nested parameters are only valid when imageOnly is set to true.

application.moderationConfiguration.imageConfiguration.commitDelay [Integer] Optional defaults to 45

The number of seconds to wait before a moderation decision made from the enhanced image moderation queue is committed.

application.moderationConfiguration.imageConfiguration.darkMode [Boolean] Optional defaults to true

Set this parameter to 'false' to disable the dark mode theme when viewing the enhanced image moderation queue.

application.moderationConfiguration.imageConfiguration.defaultTimerDuration [Integer] Optional defaults to 2

The number of seconds each image will be displayed in the queue before advancing to the next image when the queue is set to automatically advance without keyboard interaction. This value is the default value for this application for all moderators. A moderator may change this value for their own user preference.

application.moderationConfiguration.imageConfiguration.speedModerationLayout [Boolean] Optional defaults to true

Set this parameter to false to disable the enhanced image moderation queue layout and use the legacy mode.

application.moderationConfiguration.imageOnly [Boolean] Optional defaults to false

Set this parameter to true to enable this application for image only moderation. When this parameter is set to true the imageConfiguration parameters are used to provide additional configuration.

application.moderationConfiguration.keepAdditionalContentPercent [Float] optional Defaults to 1.0 Available since 3.26.0

A field that informs the filter how much content to keep beyond what is required. In situations where storage is impossible due to the database latency or load, this flag can dramatically reduce that load by cutting your unnecessary storage to zero. It is also useful to configure alwaysKeepMatches should you want to keep only content that matches.

imageFilterConfiguration.enabled [Boolean] optional Defaults to false Available since 3.28.0

A flag to enable the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterNudityConfiguration.enabled [Boolean] optional Defaults to false Available since 3.28.0

A flag to enable the nudity filter in the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterNudityConfiguration.partialNudityRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterNudityConfiguration.ignoredPartialNudityTags [Array<String>] optional Available since 3.28.0

A list of tags to ignore if the filter finds this specific kind of partial nudity.

application.moderationConfiguration.imageFilterConfiguration.mediaFilterNudityConfiguration.rawNudityRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterOffensiveConfiguration.enabled [Boolean] optional Defaults to false Available since 3.28.0

A flag to enable to the offensive filter in the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterOffensiveConfiguration.offensiveRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterOffensiveConfiguration.ignoredLabels [Array<String>] optional Available since 3.28.0

A list of labels to ignore if a matching offensive label is found in the content.

application.moderationConfiguration.imageFilterConfiguration.mediaFilterScamConfiguration.enabled [Boolean] optional Defaults to false Available since 3.28.0

A flag to enable the scam filter in the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterScamConfiguration.scamRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterWADConfiguration.enabled [Boolean] optional Defaults to false Available since 3.28.0

A flag to enable the Weapons, Alcohol, and Drugs filter in the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterWADConfiguration.alcoholRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterWADConfiguration.drugRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterWADConfiguration.weaponRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.mlFilterConfiguration.enabled [Boolean] optional Defaults to false Available since 4.0.0

A flag to enable Machine Learning.

application.moderationConfiguration.mlFilterConfiguration.locales [Array<String>] Required Available since 4.0.2

The selected locales will be sent to the Machine Learning engine to evaluate content for the selected models.

application.moderationConfiguration.mlFilterConfiguration.[model]Config.enabled [Boolean] optional Defaults to false Available since 4.0.0

A flag to enable a particular Machine Learning model. In lieu of [model], use 1 or more of the following values:

  • affinity - references shared interests, motivations or outlooks between the content author and another individual, group or entity

  • compassion - identifies with or shows concern, empathy, or support for the feelings/emotions of others

  • curiosity - attempts to clarify or ask follow-up questions to better understand another person or idea

  • identityAttack - negative or hateful comments targeting someone because of their identity

  • incoherent - Available since 4.1.0 - difficult to understand, nonsensical, may also pick up run-on sentences with no punctuation

  • insult - insulting, inflammatory, or negative comment towards a person or a group of people

  • nuance - incorporates multiple points of view in an attempt to provide a full picture or contribute useful detail and/or context

  • personalStory- includes a personal experience or story as a source of support for the statements made in the comment

  • profanity - swear words, curse words, or other obscene or profane language

  • reasoning - makes specific or well-reasoned points to provide a fuller understanding of the topic without disrespect or provocation

  • respect - shows deference or appreciation to others, or acknowledges the validity of another person

  • severeToxicity - very specific and volatile hate speech, usually referencing catch phrases of recognized hate groups

  • spam - Available since 4.1.0 - irrelevant and unsolicited commercial content

  • toxicity - a rude, disrespectful, or unreasonable comment that is likely to make people leave a discussion

  • threat - describes an intention to inflict pain, injury, or violence against an individual or group

  • unsubstantial - Available since 4.1.0 - trivial or short comments, e.g. lol, yes, ok

application.moderationConfiguration.mlFilterConfiguration.[model]Config.rules.mild [quality-filter-rule] optional Available since 4.0.0

See the enabled field for valid [model] values. This configures, for the mild level, the set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one). The default scores can be referenced in the sample "Retrieve an Application" response.

application.moderationConfiguration.mlFilterConfiguration.[model]Config.rules.medium [quality-filter-rule] optional Available since 4.0.0

See the enabled field for valid [model] values. This configures, for the medium level, the set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one). The default scores can be referenced in the sample "Retrieve an Application" response.

application.moderationConfiguration.mlFilterConfiguration.[model]Config.rules.high [quality-filter-rule] optional Available since 4.0.0

See the enabled field for valid [model] values. This configures, for the high level, the set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one). The default scores can be referenced in the sample "Retrieve an Application" response.

application.moderationConfiguration.mlFilterConfiguration.[model]Config.rules.severe [quality-filter-rule] optional Available since 4.0.0

See the enabled field for valid [model] values. This configures, for the severe level, the set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one). The default scores can be referenced in the sample "Retrieve an Application" response.

application.moderationConfiguration.videoFilterConfiguration.enabled [Boolean] optional Defaults to false Available since 3.28.0

A flag to enable the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterNudityConfiguration.enabled [Boolean] optional Defaults to false Available since 3.28.0

A flag to enable the nudity filter in the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterNudityConfiguration.partialNudityRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterNudityConfiguration.ignoredPartialNudityTags [Array<String>] optional Available since 3.28.0

A list of tags to ignore if the filter finds this specific kind of partial nudity.

application.moderationConfiguration.videoFilterConfiguration.mediaFilterNudityConfiguration.rawNudityRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterOffensiveConfiguration.enabled [Boolean] optional Available since 3.28.0

A flag to enable to the offensive filter in the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterOffensiveConfiguration.offensiveRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterOffensiveConfiguration.ignoredLabels [Array<String>] optional Available since 3.28.0

A list of labels to ignore if a matching offensive label is found in the content.

application.moderationConfiguration.videoFilterConfiguration.mediaFilterScamConfiguration.enabled [Boolean] optional Defaults to false Available since 3.28.0

A flag to enable the scam filter in the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterScamConfiguration.scamRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterWADConfiguration.enabled [Boolean] optional Defaults to false Available since 3.28.0

A flag to enable the Weapons, Alcohol, and Drugs filter in the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterWADConfiguration.alcoholRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterWADConfiguration.drugRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterWADConfiguration.weaponRules [Array<[quality-filter-rule]>] optional Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.noRuleUserScoreAdjustment [Integer] Optional

This score adjustment is used when the content did not match any rules. This value may be a positive or negative integer.

This may be used to increase a user score based upon good behavior, i.e. sending in content that did not contain any profanity. In this use case, you would provide a positive value for the adjustment.

This adjustment will only affect the user score while it is below 0. Once the user score is raised to 0 this adjustment will be ignored.

application.moderationConfiguration.persistent [Boolean] Optional defaults to false

Set this parameter to true to indicate the content type is persistent, false indicates this content is transient.

Persistent content is defined as content that is likely displayed indefinitely. A user can go and look at this content in the future by browsing a forum or performing a content search. Examples of persistent content include forum posts, profile pictures, etc. Persist content can be edited, deleted and pre-approved.

Transient content is defined as content that is displayed for a short period of time and then is likely gone forever. Transient content is usually synonymous with chat. This content cannot be pre-approved, edited or deleted.

Please note that both transient and persistent content in this context are persisted to the database.

application.moderationConfiguration.phoneNumberFilterMaxLength [Integer] Optional defaults to 20

This parameter specifies the maximum length that a match can be in order to be considered an phone number. If the match length is greater than the maximum match length the match will be ignored.

application.moderationConfiguration.phoneNumberFilterMinLength [Integer] Optional defaults to 7

This parameter specifies the minimum length that a match can be in order to be considered a phone number. The default value covers most world wide phone number formats.

application.moderationConfiguration.phoneNumberFilterSeparatorPenalty [Double] Optional defaults to -0.02

This parameter specifies a penalty that is applied to the quality score for a match if it contains any type of separator other than a dash or parenthesis. For example, 303;555;1234 contains two penalized separators so the separator penalty will be multiplied by the number of separators and added to the quality score.

application.moderationConfiguration.phoneNumberFilterSpacePenalty [Double] Optional defaults to -0.02

This parameter specifies a penalty that is applied to the quality score for a match if it contains one or more spaces. For example, 303 555 1234 contains two spaces so the space penalty will be multiplied by the number of spaces and added to the quality score.

application.moderationConfiguration.phoneNumberFilterWordPenalty [Double] Optional defaults to -0.03

This parameter specifies a penalty that is applied to the quality score for a match if it contains any words rather than digits. For example, three zero three 555 1234 contains three words so the word penalty will be multiplied by the number of words and added to the quality score.

application.moderationConfiguration.phoneNumberRules [Array<[quality-filter-rule]>] Optional

The phone number filter rules. You must supply exactly three rules. Each rule must provide a score value which is the inclusive cutoff score for a phone number match. The rules correspond to a High, Medium and Low quality filter rule. In the Management Interface these rules are referenced as High, Medium and Low.

For example, the following are the default phone number rules:

{
  "phoneNumberRules": [
    {
      "score": 90,
      "action": "allow"
    },
    {
      "score": 70,
      "action": "allow"
    },
    {
      "score": 40,
      "action": "allow"
    }
  ]
}

applicaiton.moderationConfiguration.proxy.enabled [Boolean] optional Defaults to false Available since 3.29.0-RC.1

A flag to determine if this application can send proxy requests. If disabled, all other fields will be ignored and it will not be possible to use the /content/item/moderate/proxy endpoint with this application.

applicaiton.moderationConfiguration.proxy.url [String] required Available since 3.29.0-RC.1

A destination url for the proxy to forward requests to. This is required if the proxy is enabled.

applicaiton.moderationConfiguration.proxy.connectTimeout [Integer] Optional Defaults to 2000 Available since 3.29.0-RC.1

A value that determines the maximum amount of time (in milliseconds) that CleanSpeak will wait for the connection to be established with the proxy service. If a connection takes longer than this then the request will result in a 400 on the /content/item/moderate/proxy endpoint.

applicaiton.moderationConfiguration.proxy.readTimeout [Integer] Optional Defaults to 1000 Available since 3.29.0-RC.1

A value that determines the maximum amount of time (in milliseconds) that CleanSpeak will wait for the initial read of the request to begin.

applicaiton.moderationConfiguration.proxy.headers [Object] Optional Available since 3.29.0-RC.1

An object of string keys to string values that will get encoded as headers on the proxy request.

applicaiton.moderationConfiguration.proxy.httpAuthenticationUsername [String] Optional Available since 3.29.0-RC.1

A username to supply on the proxy request. Set this if you require http basic authentication.

applicaiton.moderationConfiguration.proxy.httpAuthenticationPassword [String] Optional Available since 3.29.0-RC.1

A password to supply on the proxy request. Set this if you require http basic authentication.

applicaiton.moderationConfiguration.proxy.sslCertificate [String] Optional Available since 3.29.0-RC.1

A pem encoded ssl certificate to present as authorization on the proxy request.

application.moderationConfiguration.queuePersistentContent [Boolean] Optional defaults to false

Set this to true in order to asynchronously store persistent content. This may improve performance but there is a potential for data loss if an outage occurs before all content is committed to the database. Please consult with CleanSpeak Support if you are unsure how to use this feature.

application.moderationConfiguration.replacementCharacter [String] Optional

The character used during match replacement. If this value is set it will take precedence over replacementString.

application.moderationConfiguration.replacementString [String] Optional

The string used during match replacement. If neither replacementString or replacementCharacter are defined the default replacement character * will be utilized.

application.moderationConfiguration.returnFilterMatches [Boolean] Optional defaults to false Available since 3.9.1

Set this parameter to true in order to receive filter matches in the Moderate Content API response.

application.moderationConfiguration.rules [Object] Optional

The rules object. This object contains the Username Filter and Whitelist Filter rules.

application.moderationConfiguration.storeContent [Boolean] Optional defaults to false

Set this parameter to true in order to store content in the database. In order to take advantage of many of the advanced CleanSpeak moderation features you’ll need to store content.

application.moderationConfiguration.unicodeFilterRule.action [String] Optional defaults to allow Available since 3.22.0

The filter action for the unicode filter. Allowed options are allow or reject.

The unicode filter rejects content if it contains prohibited unicode ranges.

application.moderationConfiguration.unicodeFilterRule.data [String] Optional defaults to a provided config Available since 3.22.0

The unicode filter configuration represented as a dsl of ranges.

The ranges are described as a string of lines that may contain * Empty lines * Comments (a line starting with #) * Unicode ranges (A unicode codepoint is of the form \u0000 or \u{0} (Json unicode notation)) Ex: \u0000-\u{F}

A special condition is that the final unicode range may be an open range meaning the second unicode point is omitted.

Note: The ranges are inclusive so \u0000-\u000F includes the character \u000F

Note 2: The provided config may change between versions.

application.moderationConfiguration.urlFilterMaxLength [Integer] Optional defaults to 50

This parameter specifies the maximum length that a match can be in order to be considered a url. If the match length is greater than the maximum match length the match will be ignored.

application.moderationConfiguration.urlFilterSpacePenalty [Double] Optional defaults to -0.05

This parameter specifies a penalty that is applied to the quality score for a match if it contains one or more spaces. For example, www .ex a m ple .com contains spaces so the space penalty will added to the quality score.

application.moderationConfiguration.urlRules [Array] Optional

The url filter rules. You must supply exactly three rules. Each rule must provide a score value which is the inclusive cutoff score for a url match. The rules correspond to a High, Medium and Low quality filter rule. In the Management Interface these rules are referenced as High, Medium and Low.

For example, the following are the default url rules:

{
  "urlRules": [
    {
      "score": 90,
      "action": "allow"
    },
    {
      "score": 70,
      "action": "allow"
    },
    {
      "score": 40,
      "action": "allow"
    }
  ]
}

application.moderationConfiguration.urlRules [Array<[quality-filter-rule]>] Required

The url filter rules. You must supply exactly three rules. Each rule must provide a score value which is the inclusive cutoff score for a url match. The rules correspond to a High, Medium and Low quality filter rule. In the Management Interface these rules are referenced as High, Medium and Low.

{
  "urlRules": [
    {
      "score": 90,
      "action": "allow"
    },
    {
      "score": 70,
      "action": "allow"
    },
    {
      "score": 40,
      "action": "allow"
    }
  ]
}

applicaiton.moderationConfiguration.urlWhitelistTags [Array<String>] Optional Defaults to empty array

A list of URL whitelist tag names that you would like to include in this application. Any tags you add will include any whitelisted urls that are tagged with the same tag in the moderate workflow. Any whitelisted urls that are untagged are always used.

application.moderationConfiguration.userCheckOutMinutes [Integer] Optional defaults to 10

The number of minutes a Content User is checked out for before it is automatically released to be eligible for another moderator to check out.

application.moderationConfiguration.userFlagUserScoreAdjustment [Integer] Optional

The amount the User score is adjusted when the user is flagged. This value may be a positive or negative integer.

applicaiton.notificationServers [Array] Optional

A list of webhooks to use on an application. (This will create new webhooks every time)

Note: Notification Servers are now called Webhooks.

(See Handling Events for more details)

applicaiton.notificationServers[x].connectTimeout [Integer] Optional Defaults to 1000

The maximum amount of time a server will take to try to connect in milliseconds.

application.notificationServers[x].readTimeout [Integer] Optional Defaults to 2000

The maximum amount of time any read call will wait for data to flow.

application.notificationServers[x].description [String] Optional Since 3.27.0

A description of the webhook and its purpose.

application.notificationServers[x].eventsEnabled[eventType] [Boolean] Optional Defaults to true Since 3.27.0

A list of enabled event types for this webhook. If a value in this map is false, then it will not recieve events of that type. The possible values for eventType are as follows (each has a related section in Handling Events):

  • ContentAction

  • ContentApproval

  • ContentDelete

  • ContentEdit

  • FilterApproval

application.notificationServers[x].httpAuthenticationPassword [String] Optional

A password to supply on the event request.

application.notificationServers[x].httpAuthenticationUsername [String] Optional

A username to supply on the event request.

applicaiton.notificationServers[x].sslCertificate [String] Optional

An ssl client certificate to present on the event request.

application.notificationServers[x].url [String] required

The url of a server listening for events.

Example Request JSON
{
  "application": {
    "moderationConfiguration": {
      "alwaysKeepMatches": false,
      "approvalCheckOutMinutes": 10,
      "approvalQueueSize": 30,
      "archiveConfiguration": {
        "deleteOnly": true,
        "enabled": false
      },
      "contentAlertCheckOutMinutes": 10,
      "contentAlertQueueSize": 30,
      "contentDeletable": true,
      "contentEditable": true,
      "contentFlagAlertType": "User",
      "contentFlagUserScoreAdjustment": -3,
      "contentUserActionsEnabled": true,
      "ignorableCharacters": "qxz",
      "imageConfiguration": {
        "commitDelay": 45,
        "darkMode": true,
        "defaultTimerDuration": 2.0,
        "speedModerationLayout": true
      },
      "imageFilterConfiguration": {
        "enabled": true,
        "mediaFilterNudityConfiguration": {
          "enabled": true,
          "ignoredPartialNudityTags": [],
          "partialNudityRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "rawNudityRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterOffensiveConfiguration": {
          "enabled": true,
          "ignoredLabels": [],
          "offensiveRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterScamConfiguration": {
          "enabled": true,
          "scamRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterWADConfiguration": {
          "alcoholRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "drugRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "enabled": true,
          "weaponRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        }
      },
      "mlFilterConfiguration": {
        "affinityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "compassionConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "curiosityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "enabled": false,
        "locales": ["en"],
        "identityAttackConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "incoherentConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 74
            },
            "medium": {
              "action": "allow",
              "score": 84
            },
            "high": {
              "action": "allow",
              "score": 94
            },
            "severe": {
              "action": "allow",
              "score": 99
            }
          }
        },
        "insultConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "nuanceConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "personalStoryConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "profanityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "reasoningConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "respectConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "severeToxicityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "spamConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 70
            },
            "medium": {
              "action": "allow",
              "score": 80
            },
            "high": {
              "action": "allow",
              "score": 90
            },
            "severe": {
              "action": "allow",
              "score": 97
            }
          }
        },
        "threatConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "toxicityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "unsubstantialConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 79
            },
            "medium": {
              "action": "allow",
              "score": 79
            },
            "high": {
              "action": "allow",
              "score": 89
            },
            "severe": {
              "action": "allow",
              "score": 99
            }
          }
        }
      },
      "unicodeFilterRule": {
        "action": "allow",
        "data": "# Non-printable\n\\u0000-\\u0008\n\\u000B-\\u000C\n\\u000E-\\u001F\n\\u007F-\\u009F\n\n# Symbols, etc.\n\\u00A6-\\u00A8\n\\u00AA-\\u00AD\n\\u00AF-\\u00B0\n\\u00B7-\\u00B7\n\\u00BA-\\u00BB\n\\u02BB-\\u02FF\n\n# Combining marks\n\\u0300-\\u036F\n\\u0590-\\u05C0\n\n# Language sets\n\\u0700-\\u074F\n\\u0780-\\u085F\n\\u08A0-\\u1C7F\n\n# Language supplements and punctuation\n\\u1CC0-\\u1DB0\n\\u1DC0-\\u209F\n\n# More punctuation, symbols, shapes, etc.\n\\u20D0-\\u2599\n\\u2700-\\u2E7F\n\n# CJK punctuation\n\\u3000-\\u303F\n\n# Lisu and above\n\\uA4D0-\\uABFF\n\n# Everything after CJK and Hangul (mostly surrogates and private use)\n\\uD7B0-\\u{1F2FF}\n\n# Everything after Emoji\n\\u{1F700}-"
      },
      "videoFilterConfiguration": {
        "enabled": true,
        "mediaFilterNudityConfiguration": {
          "enabled": true,
          "ignoredPartialNudityTags": [],
          "partialNudityRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "rawNudityRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterOffensiveConfiguration": {
          "enabled": true,
          "ignoredLabels": [],
          "offensiveRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterScamConfiguration": {
          "enabled": true,
          "scamRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterWADConfiguration": {
          "alcoholRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "drugRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "enabled": true,
          "weaponRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        }
      },
      "defaultActionIsQueueForApproval": false,
      "dictionaryTags": [
        "whitelistA"
      ],
      "emailOnAlerts": false,
      "emailOnContentFlagged": false,
      "emailOnEscalations": false,
      "emailOnUserFlagged": false,
      "emailRules": [
        {
          "action": "allow",
          "score": 90
        },
        {
          "score": 70,
          "action": "allow"
        },
        {
          "score": 40,
          "action": "allow"
        }
      ],
      "filterRules": [
        {
          "highAction": "authorOnly",
          "highAlertType": "User",
          "locales": [],
          "mediumAction": "allow",
          "mildAction": "allow",
          "severeAction": "reject",
          "severeAlertType": "User",
          "tags": [
            "Vulgarity"
          ]
        },
        {
          "highAction": "allow",
          "highAlertType": "User",
          "locales": [
            "en"
          ],
          "mediumAction": "allow",
          "mildAction": "allow",
          "severeAction": "authorOnly",
          "severeAlertType": "User",
          "tags": [
            "Bullying"
          ]
        }
      ],
      "imageOnly": false,
      "keepAdditionalContentPercent": 1.0,
      "persistent": true,
      "phoneNumberRules": [
        {
          "action": "allow",
          "score": 90,
          "userScoreAdjustment": -10
        },
        {
          "alertType": "Content",
          "userScoreAdjustment": -5,
          "score": 70,
          "action": "allow"
        },
        {
          "score": 40,
          "alertType": "User",
          "userScoreAdjustment": -1,
          "action": "allow"
        }
      ],
      "proxy": {
        "connectTimeout": 2000,
        "enabled": true,
        "headers": {
          "Authorization": "APIKEY",
          "X-SomeHeader": "HeaderValue"
        },
        "httpAuthenticationPassword": "pass",
        "httpAuthenticationUsername": "user",
        "readTimeout": 4000,
        "sslCertificate": "-----BEGIN CERTIFICATE-----\nMIIDTzCCArigAwIBAgIJAMA7XJzxYkPUMA0GCSqGSIb3DQEBBQUAMHkxCzAJBgNV\nBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGZGVudmVyMRIwEAYDVQQKEwlp\nbnZlcnNvZnQxEjAQBgNVBAMTCWxvY2FsaG9zdDEkMCIGCSqGSIb3DQEJARYVc3Vw\ncG9ydEBpbnZlcnNvZnQuY29tMB4XDTE0MDQxMDE5NTA1MFoXDTE0MDUxMDE5NTA1\nMFoweTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNPMQ8wDQYDVQQHEwZkZW52ZXIx\nEjAQBgNVBAoTCWludmVyc29mdDESMBAGA1UEAxMJbG9jYWxob3N0MSQwIgYJKoZI\nhvcNAQkBFhVzdXBwb3J0QGludmVyc29mdC5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD\ngY0AMIGJAoGBAMZ0AasrmL41BOGhUOr1WVOUah5styok4NjXMRCyJWc7VEyt2lRW\nyaAQeIsR1wgmLJbo7YSC8gY4E9xfiIUqTwHK5bvDuS1T2jwsrIf0jaxjcB+Janol\nvWeVgIUTv5xuzWTWtFEjxwHoum/Ur/T8bigmPhiXwCMJTuP25bSB9Ov5AgMBAAGj\ngd4wgdswHQYDVR0OBBYEFFOEqiRBZtc1vgnC8Zi5QEa6rTDdMIGrBgNVHSMEgaMw\ngaCAFFOEqiRBZtc1vgnC8Zi5QEa6rTDdoX2kezB5MQswCQYDVQQGEwJVUzELMAkG\nA1UECBMCQ08xDzANBgNVBAcTBmRlbnZlcjESMBAGA1UEChMJaW52ZXJzb2Z0MRIw\nEAYDVQQDEwlsb2NhbGhvc3QxJDAiBgkqhkiG9w0BCQEWFXN1cHBvcnRAaW52ZXJz\nb2Z0LmNvbYIJAMA7XJzxYkPUMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD\ngYEAwXVTn4xPTK4LpAH5F6mjkPefLwuPb7r+oCBuMFjFlGyp3fUmxXIIDt5GhApI\niLTGDJCwZ2znJBzQBlvaCekkEedGq3kTrfpFs0T8DFxc6kMtb8v16JJlSVBXmdAm\nKYeduqsD+n+YjBqS2+08N1DBcpcYkHKi11yZWQ3scWoTsQQ=\n-----END CERTIFICATE-----",
        "url": "http://example.com"
      },
      "queuePersistentContent": false,
      "returnFilterMatches": false,
      "rules": {
        "usernameFilterRule": {
          "action": "reject",
          "enabled": false
        },
        "whitelistFilterRules": {
          "disallowedPhrase": {
            "action": "allow"
          },
          "disallowedWord": {
            "action": "allow"
          }
        }
      },
      "storeContent": true,
      "urlRules": [
        {
          "score": 90,
          "action": "allow"
        },
        {
          "action": "allow",
          "score": 70
        },
        {
          "score": 40,
          "action": "allow"
        }
      ],
      "urlWhitelistTags": [
        "tag1"
      ],
      "userCheckOutMinutes": 10,
      "userFlagUserScoreAdjustment": -3
    },
    "name": "Chat",
    "notificationServers": [
      {
        "connectTimeout": 1000,
        "id": 21,
        "url": "http://chat.example.com/notification-handler",
        "readTimeout": 2000
      }
    ]
  }
}

4.2. Response

Table 10. Response Codes
Code Description

200

The request was successful. The response will contain a JSON body.

400

The request was invalid and/or malformed. The response will contain an Errors JSON Object with the specific errors.

401

You did not supply a valid Authorization header. The header was omitted or your API key was not valid. The response will be empty. See Authentication.

402

Your license has expired. The response will be empty. Contact sales@cleanspeak.com for assistance.

404

The object you are trying to update doesn’t exist. The response will be empty.

500

There was an internal error. A stack trace is provided and logged in the CleanSpeak log files. The response will be empty.

Table 11. Response Body

application [Object]

The Application object.

application.id [UUID]

The Id of the Application.

application.moderationConfiguration.alwaysKeepMatches [Boolean] Optional Defaults to false Available since 3.26.0

A flag to enable all matches to be kept. This is useful if keepAdditionalContentPercent is less than 1.0 so that you can ensure that you are always keeping content that was matched on.

application.moderationConfiguration.approvalCheckOutMinutes [Integer]

The number of minutes content is checked out for in the Approval Queue before it is automatically released to be eligible for another moderator to check out.

application.moderationConfiguration.approvalQueueSize [Integer]

The number of items checked out of the Approval Queue at a time for a moderator.

application.moderationConfiguration.archiveConfiguration [Object]

The archive configuration object.

application.moderationConfiguration.archiveConfiguration.enabled [Boolean]

Setting this value to true enables content deletion. This is false by default which means no content is deleted. If you’ll be sending in high volumes of content content deletion should be enabled. CleanSpeak is not designed to store content indefinitely.

application.moderationConfiguration.archiveConfiguration.storeDuration [Integer]

The number of units content should be kept. The unit value is determined by the storeTimeUnit.

application.moderationConfiguration.archiveConfiguration.storeOffsetDuration [Integer]

The number of units to be added to the storeDuration. The offset unit is determined by the storeOffsetTimeUnit.

application.moderationConfiguration.archiveConfiguration.storeOffsetTimeUnit [String]

The time unit for the offset. The possible values are:

  • minutes

  • hours

  • days

  • months

  • years

application.moderationConfiguration.archiveConfiguration.storeTimeUnit [String]

The time unit for the duration. The possible values are:

  • minutes

  • hours

  • days

  • months

  • years

application.moderationConfiguration.contentAlertCheckOutMinutes [Integer]

The number of minutes content is checked out for in the Alert Queue before it is automatically released to be eligible for another moderator to check out.

application.moderationConfiguration.contentAlertQueueSize [Integer]

The number of items checked out of the Alert Queue at a time for a moderator.

application.moderationConfiguration.contentDeletable [Boolean]

Set to true if you want the ability to delete content. Enabling this feature allows a moderator to delete content which in turn sends an event of type contentDelete to be consumed by the CleanSpeak event handler.

application.moderationConfiguration.contentEditable [Boolean]

Set to true if you want the ability to edit content. Enabling this feature allows a moderator to edit content which in turn sends an event of type contentEdit to be consumed by the CleanSpeak event handler.

application.moderationConfiguration.contentFlagAlertType [String]

By default when content is flagged a User alert is generated. Setting this to Content changes the behavior such that a Content alert is sent instead. The possible values are:

  • Content

  • User

application.moderationConfiguration.contentFlagUserScoreAdjustment [Integer]

The amount the User score is adjusted when content is flagged. This value may be a positive or negative integer.

application.moderationConfiguration.contentUserActionsEnabled [Boolean]

Set to true if you want user actions enabled. Enable this if you intend to allow moderators to action users, for example mute, ban, kick users. When disabled you will not be able to select this application as a target for a user action.

application.moderationConfiguration.defaultActionIsQueueForApproval [Boolean]

Set to true if you want content to be queued for approval when no filter rules are hit. This includes content that matched a rule set to allow.

For example, when this parameter is set to true and the content

  • did not match any filter rules, do queue for approval.

  • did not match any filter rules, but the moderate request parameter for moderation is set to generateAlert or generatesContentAlert, do not queue for approval.

  • did match one or more filters with an action other than allow, do not queue for approval.

This feature may be used way to ensure all content is reviewed in some fashion by a moderator.

application.moderationConfiguration.dictionaryTags [Array<String>] Available since 3.12.0

A list of dictionary tags to apply to moderation actions using this application.

Tags will cause the filter to throw out matches that exactly match dictionary words with any of the tags in this list.

application.moderationConfiguration.emailFilterMaxLength [Integer]

This parameter specifies the maximum length that a match can be in order to be considered an email. If the match length is greater than the maximum match length the match will be ignored.

application.moderationConfiguration.emailFilterSpacePenalty [Double]

This parameter specifies a penalty applied to the quality score if the match contains any spaces. For example, user@ example.com contains a space so the space penalty value will be added to the quality score. The email space penalty is applied once regardless of the number of spaces found in the match.

application.moderationConfiguration.emailOnAlerts [Boolean]

Set this parameter to true to email moderators for content alerts.

application.moderationConfiguration.emailOnContentFlagged [Boolean]

Set this parameter to true to email moderators when content is flagged.

application.moderationConfiguration.emailOnUserFlagged [Boolean]

Set this parameter to true to email moderators when users are flagged.

application.moderationConfiguration.emailRules [quality-filter-rule]>">[Array]

The email filter rules. You must supply exactly three rules. Each rule must provide a score value which is the inclusive cutoff score for an email match. The rules correspond to a High, Medium and Low quality filter rule. In the Management Interface these rules are referenced as High, Medium and Low.

For example, the following are the default email rules:

{
  "emailRules": [
    {
      "score": 90,
      "action": "allow"
    },
    {
      "score": 70,
      "action": "allow"
    },
    {
      "score": 40,
      "action": "allow"
    }
  ]
}

application.moderationConfiguration.filterRules [Array]

The list of blacklist filter rules.

application.moderationConfiguration.filterRules[x].tags [Array<String>]

The blacklist tags for this filter rule. A filter rule may have one or more tags.

application.moderationConfiguration.filterRules[x].locales [Array<String>]

The match locales. If this parameter is omitted the filter rule will apply to all locales. See Locales.

application.moderationConfiguration.filterRules[x].mildAction [String]

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

application.moderationConfiguration.filterRules[x].mildAlertType [String]

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

application.moderationConfiguration.filterRules[x].mildUserScoreAdjustment [String]

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.

application.moderationConfiguration.filterRules[x].mediumAction [String]

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

application.moderationConfiguration.filterRules[x].mediumAlertType [String]

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

application.moderationConfiguration.filterRules[x].mediumUserScoreAdjustment [String]

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.

application.moderationConfiguration.filterRules[x].highAction [String]

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

application.moderationConfiguration.filterRules[x].highAlertType [String]

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

application.moderationConfiguration.filterRules[x].highUserScoreAdjustment [String]

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.

application.moderationConfiguration.filterRules[x].severeAction [String]

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

application.moderationConfiguration.filterRules[x].severeAlertType [String]

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

application.moderationConfiguration.filterRules[x].severeUserScoreAdjustment [String]

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.

application.moderationConfiguration.ignorableCharacters [String] Available since 3.22.0

The list list of characters the filter can skip over to find a match.

Specifically, this feature will catch any blacklist word even if separated by a single character on this list. Example: SxMxUxRxF Note: only the same letter may be used to separate the characters throughout the word and only one ignored character in a row is permitted.

application.moderationConfiguration.imageConfiguration [Object]

The image moderation configuration object. This parameter and all nested parameters are only valid when imageOnly is set to true.

application.moderationConfiguration.imageConfiguration.commitDelay [Integer]

The number of seconds to wait before a moderation decision made from the enhanced image moderation queue is committed.

application.moderationConfiguration.imageConfiguration.darkMode [Boolean]

Set this parameter to 'false' to disable the dark mode theme when viewing the enhanced image moderation queue.

application.moderationConfiguration.imageConfiguration.defaultTimerDuration [Integer]

The number of seconds each image will be displayed in the queue before advancing to the next image when the queue is set to automatically advance without keyboard interaction. This value is the default value for this application for all moderators. A moderator may change this value for their own user preference.

application.moderationConfiguration.imageConfiguration.speedModerationLayout [Boolean]

Set this parameter to false to disable the enhanced image moderation queue layout and use the legacy mode.

application.moderationConfiguration.imageOnly [Boolean]

Set this parameter to true to enable this application for image only moderation. When this parameter is set to true the imageConfiguration parameters are used to provide additional configuration.

application.moderationConfiguration.keepAdditionalContentPercent [Float] Available since 3.26.0

A field that informs the filter how much content to keep beyond what is required. In situations where storage is impossible due to the database latency or load, this flag can dramatically reduce that load by cutting your unnecessary storage to zero. It is also useful to configure alwaysKeepMatches should you want to keep only content that matches.

imageFilterConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterNudityConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the nudity filter in the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterNudityConfiguration.partialNudityRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterNudityConfiguration.ignoredPartialNudityTags [Array<String>] Available since 3.28.0

A list of tags to ignore if the filter finds this specific kind of partial nudity.

application.moderationConfiguration.imageFilterConfiguration.mediaFilterNudityConfiguration.rawNudityRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterOffensiveConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable to the offensive filter in the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterOffensiveConfiguration.offensiveRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterOffensiveConfiguration.ignoredLabels [Array<String>] Available since 3.28.0

A list of labels to ignore if a matching offensive label is found in the content.

application.moderationConfiguration.imageFilterConfiguration.mediaFilterScamConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the scam filter in the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterScamConfiguration.scamRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterWADConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the Weapons, Alcohol, and Drugs filter in the image filter

application.moderationConfiguration.imageFilterConfiguration.mediaFilterWADConfiguration.alcoholRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterWADConfiguration.drugRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.imageFilterConfiguration.mediaFilterWADConfiguration.weaponRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.mlFilterConfiguration.enabled [Boolean] optional Defaults to false Available since 4.0.0

A flag to enable Machine Learning.

application.moderationConfiguration.mlFilterConfiguration.locales [Array<String>] Available since 4.0.2

The selected locales will be sent to the Machine Learning engine to evaluate content for the selected models.

application.moderationConfiguration.mlFilterConfiguration.[model]Config.enabled [Boolean] optional Defaults to false Available since 4.0.0

A flag to enable a particular Machine Learning model. [model] will be 1 or more of the following values:

  • affinity - references shared interests, motivations or outlooks between the content author and another individual, group or entity

  • compassion - identifies with or shows concern, empathy, or support for the feelings/emotions of others

  • curiosity - attempts to clarify or ask follow-up questions to better understand another person or idea

  • identityAttack - negative or hateful comments targeting someone because of their identity

  • incoherent - Available since 4.1.0 - difficult to understand, nonsensical, may also pick up run-on sentences with no punctuation

  • insult - insulting, inflammatory, or negative comment towards a person or a group of people

  • nuance - incorporates multiple points of view in an attempt to provide a full picture or contribute useful detail and/or context

  • personalStory- includes a personal experience or story as a source of support for the statements made in the comment

  • profanity - swear words, curse words, or other obscene or profane language

  • reasoning - makes specific or well-reasoned points to provide a fuller understanding of the topic without disrespect or provocation

  • respect - shows deference or appreciation to others, or acknowledges the validity of another person

  • severeToxicity - very specific and volatile hate speech, usually referencing catch phrases of recognized hate groups

  • spam - Available since 4.1.0 - irrelevant and unsolicited commercial content

  • toxicity - a rude, disrespectful, or unreasonable comment that is likely to make people leave a discussion

  • threat - describes an intention to inflict pain, injury, or violence against an individual or group

  • unsubstantial - Available since 4.1.0 - trivial or short comments, e.g. lol, yes, ok

application.moderationConfiguration.mlFilterConfiguration.[model]Config.rules.mild [quality-filter-rule] optional Available since 4.0.0

See the enabled field for [model] values. This configures, for the mild level, the set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one).

application.moderationConfiguration.mlFilterConfiguration.[model]Config.rules.medium [quality-filter-rule] optional Available since 4.0.0

See the enabled field for [model] values. This configures, for the medium level, the set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one).

application.moderationConfiguration.mlFilterConfiguration.[model]Config.rules.high [quality-filter-rule] optional Available since 4.0.0

See the enabled field for [model] values. This configures, for the high level, the set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one).

application.moderationConfiguration.mlFilterConfiguration.[model]Config.rules.severe [quality-filter-rule] optional Available since 4.0.0

See the enabled field for [model] values. This configures, for the severe level, the set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one).

application.moderationConfiguration.videoFilterConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterNudityConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the nudity filter in the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterNudityConfiguration.partialNudityRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterNudityConfiguration.ignoredPartialNudityTags [Array<String>] Available since 3.28.0

A list of tags to ignore if the filter finds this specific kind of partial nudity.

application.moderationConfiguration.videoFilterConfiguration.mediaFilterNudityConfiguration.rawNudityRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterOffensiveConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable to the offensive filter in the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterOffensiveConfiguration.offensiveRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterOffensiveConfiguration.ignoredLabels [Array<String>] Available since 3.28.0

A list of labels to ignore if a matching offensive label is found in the content.

application.moderationConfiguration.videoFilterConfiguration.mediaFilterScamConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the scam filter in the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterScamConfiguration.scamRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterWADConfiguration.enabled [Boolean] Available since 3.28.0

A flag to enable the Weapons, Alcohol, and Drugs filter in the video filter

application.moderationConfiguration.videoFilterConfiguration.mediaFilterWADConfiguration.alcoholRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterWADConfiguration.drugRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.videoFilterConfiguration.mediaFilterWADConfiguration.weaponRules [Array<[quality-filter-rule]>] Available since 3.28.0

A list of three Quality Filter Rules. Each rule is a set of things to do in the event the filter finds a match with a score greater than that in the rule. (It will pick the highest one)

application.moderationConfiguration.noRuleUserScoreAdjustment [Integer]

This score adjustment is used when the content did not match any rules. This value may be a positive or negative integer.

This may be used to increase a user score based upon good behavior, i.e. sending in content that did not contain any profanity. In this use case, you would provide a positive value for the adjustment.

This adjustment will only affect the user score while it is below 0. Once the user score is raised to 0 this adjustment will be ignored.

application.moderationConfiguration.persistent [Boolean]

Set this parameter to true to indicate the content type is persistent, false indicates this content is transient.

Persistent content is defined as content that is likely displayed indefinitely. A user can go and look at this content in the future by browsing a forum or performing a content search. Examples of persistent content include forum posts, profile pictures, etc. Persist content can be edited, deleted and pre-approved.

Transient content is defined as content that is displayed for a short period of time and then is likely gone forever. Transient content is usually synonymous with chat. This content cannot be pre-approved, edited or deleted.

Please note that both transient and persistent content in this context are persisted to the database.

application.moderationConfiguration.phoneNumberFilterMaxLength [Integer]

This parameter specifies the maximum length that a match can be in order to be considered an phone number. If the match length is greater than the maximum match length the match will be ignored.

application.moderationConfiguration.phoneNumberFilterMinLength [Integer]

This parameter specifies the minimum length that a match can be in order to be considered a phone number. The default value covers most world wide phone number formats.

application.moderationConfiguration.phoneNumberFilterSeparatorPenalty [Double]

This parameter specifies a penalty that is applied to the quality score for a match if it contains any type of separator other than a dash or parenthesis. For example, 303;555;1234 contains two penalized separators so the separator penalty will be multiplied by the number of separators and added to the quality score.

application.moderationConfiguration.phoneNumberFilterSpacePenalty [Double]

This parameter specifies a penalty that is applied to the quality score for a match if it contains one or more spaces. For example, 303 555 1234 contains two spaces so the space penalty will be multiplied by the number of spaces and added to the quality score.

application.moderationConfiguration.phoneNumberFilterWordPenalty [Double]

This parameter specifies a penalty that is applied to the quality score for a match if it contains any words rather than digits. For example, three zero three 555 1234 contains three words so the word penalty will be multiplied by the number of words and added to the quality score.

application.moderationConfiguration.phoneNumberRules [Array<[quality-filter-rule]>]

The phone number filter rules. You must supply exactly three rules. Each rule must provide a score value which is the inclusive cutoff score for a phone number match. The rules correspond to a High, Medium and Low quality filter rule. In the Management Interface these rules are referenced as High, Medium and Low.

For example, the following are the default phone number rules:

{
  "phoneNumberRules": [
    {
      "score": 90,
      "action": "allow"
    },
    {
      "score": 70,
      "action": "allow"
    },
    {
      "score": 40,
      "action": "allow"
    }
  ]
}

applicaiton.moderationConfiguration.proxy.enabled [Boolean]

A flag to determine if this application can send proxy requests. If disabled, all other fields will be ignored and it will not be possible to use the /content/item/moderate/proxy endpoint with this application.

applicaiton.moderationConfiguration.proxy.url [String] Available since 3.29.0-RC.1

A destination url for the proxy to forward requests to. This is required if the proxy is enabled.

applicaiton.moderationConfiguration.proxy.connectTimeout [Integer] Available since 3.29.0-RC.1

A value that determines the maximum amount of time (in milliseconds) that CleanSpeak will wait for the connection to be established with the proxy service. If a connection takes longer than this then the request will result in a 400 on the /content/item/moderate/proxy endpoint.

applicaiton.moderationConfiguration.proxy.readTimeout [Integer] Optional Available since 3.29.0-RC.1

A value that determines the maximum amount of time (in milliseconds) that CleanSpeak will wait for the initial read of the request to begin.

applicaiton.moderationConfiguration.proxy.headers [Object] Available since 3.29.0-RC.1

An object of string keys to string values that will get encoded as headers on the proxy request.

applicaiton.moderationConfiguration.proxy.httpAuthenticationUsername [String] Available since 3.29.0-RC.1

A username to supply on the proxy request. Set this if you require http basic authentication.

applicaiton.moderationConfiguration.proxy.httpAuthenticationPassword [String] Available since 3.29.0-RC.1

A password to supply on the proxy request. Set this if you require http basic authentication.

applicaiton.moderationConfiguration.proxy.sslCertificate [String] Available since 3.29.0-RC.1

A pem encoded ssl certificate to present as authorization on the proxy request.

application.moderationConfiguration.queuePersistentContent [Boolean] Available since 3.29.0-RC.1

Set this to true in order to asynchronously store persistent content. This may improve performance but there is a potential for data loss if an outage occurs before all content is committed to the database. Please consult with CleanSpeak Support if you are unsure how to use this feature.

application.moderationConfiguration.replacementCharacter [String]

The character used during match replacement. If this value is set it will take precedence over replacementString.

application.moderationConfiguration.replacementString [String]

The string used during match replacement. If neither replacementString or replacementCharacter are defined the default replacement character * will be utilized.

application.moderationConfiguration.returnFilterMatches [Boolean] Available since 3.9.1

This parameter specifies if filter matches will be returned in the Moderate Content API response.

application.moderationConfiguration.rules [Object]

The rules object. This object contains the Username Filter and Whitelist Filter rules.

application.moderationConfiguration.storeContent [Boolean]

Set this parameter to true in order to store content in the database. In order to take advantage of many of the advanced CleanSpeak moderation features you’ll need to store content.

application.moderationConfiguration.unicodeFilterRule.action [String] Available since 3.22.0

The filter action for the unicode filter. Allowed options are allow or reject.

The unicode filter rejects content if it contains prohibited unicode ranges.

application.moderationConfiguration.unicodeFilterRule.data [String] Available since 3.22.0

The unicode filter configuration represented as a dsl of ranges.

The ranges are described as a string of lines that may contain * Empty lines * Comments (a line starting with #) * Unicode ranges (A unicode codepoint is of the form \u0000 or \u{0} (Json unicode notation)) Ex: \u0000-\u{F}

A special condition is that the final unicode range may be an open range meaning the second unicode point is omitted.

Note: The ranges are inclusive so \u0000-\u000F includes the character \u000F

Note 2: The provided config may change between versions.

application.moderationConfiguration.urlFilterMaxLength [Integer]

This parameter specifies the maximum length that a match can be in order to be considered a url. If the match length is greater than the maximum match length the match will be ignored.

application.moderationConfiguration.urlFilterSpacePenalty [Double]

This parameter specifies a penalty that is applied to the quality score for a match if it contains one or more spaces. For example, www .ex a m ple .com contains spaces so the space penalty will added to the quality score.

application.moderationConfiguration.urlRules [Array<[quality-filter-rule]>]

The url filter rules. You must supply exactly three rules. Each rule must provide a score value which is the inclusive cutoff score for a url match. The rules correspond to a High, Medium and Low quality filter rule. In the Management Interface these rules are referenced as High, Medium and Low.

For example, the following are the default url rules:

{
  "urlRules": [
    {
      "score": 90,
      "action": "allow"
    },
    {
      "score": 70,
      "action": "allow"
    },
    {
      "score": 40,
      "action": "allow"
    }
  ]
}

applicaiton.moderationConfiguration.urlWhitelistTags [Array<String>] Optional Defaults to empty array

A list of URL whitelist tag names that this application will use during moderation. The tags will include any whitelisted urls that are tagged with the same tag. Any whitelisted urls that are untagged are always used.

application.moderationConfiguration.userCheckOutMinutes [Integer]

The number of minutes a Content User is checked out for before it is automatically released to be eligible for another moderator to check out.

application.moderationConfiguration.userFlagUserScoreAdjustment [Integer]

The amount the User score is adjusted when the user is flagged. This value may be a positive or negative integer.

applicaiton.notificationServers [Array] Optional

A list of webhooks to use on an application. (This will create new webhooks every time)

Note: Notification Servers are now called Webhooks.

(See Handling Webhook Events for more details)

applicaiton.notificationServers[x].connectTimeout [Integer]

The maximum amount of time a server will take to try to connect in milliseconds.

application.notificationServers[x].readTimeout [Integer]

The maximum amount of time any read call will wait for data to flow.

application.notificationServers[x].description [String] Since 3.27.0

A description of the webhook and its purpose.

application.notificationServers[x].eventsEnabled[eventType] [Boolean] Since 3.27.0

A list of enabled event types for this webhook. If a value in this map is false, then it will not recieve events of that type. The possible values for eventType are as follows (each has a related section in Handling Events):

  • ContentAction

  • ContentApproval

  • ContentDelete

  • ContentEdit

  • FilterApproval

application.notificationServers[x].httpAuthenticationPassword [String] Optional

A password to supply on the event request.

application.notificationServers[x].httpAuthenticationUsername [String] Optional

A username to supply on the event request.

applicaiton.notificationServers[x].sslCertificate [String] Optional

An ssl client certificate to present on the event request.

application.notificationServers[x].url [String]

The url of a server listening for events.

Example Response JSON
{
  "application": {
    "id": "f81d4fae-7dec-11d0-a765-00a0c91e6bf6",
    "moderationConfiguration": {
      "alwaysKeepMatches": false,
      "approvalCheckOutMinutes": 10,
      "approvalQueueSize": 30,
      "archiveConfiguration": {
        "deleteOnly": true,
        "enabled": false
      },
      "contentAlertCheckOutMinutes": 10,
      "contentAlertQueueSize": 30,
      "contentDeletable": true,
      "contentEditable": true,
      "contentFlagAlertType": "User",
      "contentFlagUserScoreAdjustment": -3,
      "contentUserActionsEnabled": true,
      "ignorableCharacters": "qxz",
      "imageConfiguration": {
        "commitDelay": 45,
        "darkMode": true,
        "defaultTimerDuration": 2.0,
        "speedModerationLayout": true
      },
      "imageFilterConfiguration": {
        "enabled": true,
        "mediaFilterNudityConfiguration": {
          "enabled": true,
          "ignoredPartialNudityTags": [],
          "partialNudityRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "rawNudityRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterOffensiveConfiguration": {
          "enabled": true,
          "ignoredLabels": [],
          "offensiveRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterScamConfiguration": {
          "enabled": true,
          "scamRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterWADConfiguration": {
          "alcoholRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "drugRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "enabled": true,
          "weaponRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        }
      },
      "mlFilterConfiguration": {
        "affinityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "compassionConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "curiosityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "enabled": false,
        "locales": ["en"],
        "identityAttackConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 35
            },
            "medium": {
              "action": "allow",
              "score": 45
            },
            "high": {
              "action": "allow",
              "score": 55
            },
            "severe": {
              "action": "allow",
              "score": 61
            }
          }
        },
        "incoherentConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 74
            },
            "medium": {
              "action": "allow",
              "score": 84
            },
            "high": {
              "action": "allow",
              "score": 94
            },
            "severe": {
              "action": "allow",
              "score": 99
            }
          }
        },
        "insultConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 50
            },
            "medium": {
              "action": "allow",
              "score": 60
            },
            "high": {
              "action": "allow",
              "score": 70
            },
            "severe": {
              "action": "allow",
              "score": 80
            }
          }
        },
        "nuanceConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "personalStoryConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "profanityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 30
            },
            "medium": {
              "action": "allow",
              "score": 40
            },
            "high": {
              "action": "allow",
              "score": 50
            },
            "severe": {
              "action": "allow",
              "score": 60
            }
          }
        },
        "reasoningConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "respectConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "severeToxicityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 5
            },
            "medium": {
              "action": "allow",
              "score": 10
            },
            "high": {
              "action": "allow",
              "score": 20
            },
            "severe": {
              "action": "allow",
              "score": 25
            }
          }
        },
        "spamConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 70
            },
            "medium": {
              "action": "allow",
              "score": 80
            },
            "high": {
              "action": "allow",
              "score": 90
            },
            "severe": {
              "action": "allow",
              "score": 97
            }
          }
        },
        "threatConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 40
            },
            "medium": {
              "action": "allow",
              "score": 50
            },
            "high": {
              "action": "allow",
              "score": 60
            },
            "severe": {
              "action": "allow",
              "score": 70
            }
          }
        },
        "toxicityConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 50
            },
            "medium": {
              "action": "allow",
              "score": 60
            },
            "high": {
              "action": "allow",
              "score": 70
            },
            "severe": {
              "action": "allow",
              "score": 79
            }
          }
        },
        "unsubstantialConfig": {
          "enabled": false,
          "rules": {
            "mild": {
              "action": "allow",
              "score": 79
            },
            "medium": {
              "action": "allow",
              "score": 79
            },
            "high": {
              "action": "allow",
              "score": 89
            },
            "severe": {
              "action": "allow",
              "score": 99
            }
          }
        }
      },
      "unicodeFilterRule": {
        "action": "allow"
      },
      "videoFilterConfiguration": {
        "enabled": true,
        "mediaFilterNudityConfiguration": {
          "enabled": true,
          "ignoredPartialNudityTags": [],
          "partialNudityRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "rawNudityRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterOffensiveConfiguration": {
          "enabled": true,
          "ignoredLabels": [],
          "offensiveRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterScamConfiguration": {
          "enabled": true,
          "scamRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        },
        "mediaFilterWADConfiguration": {
          "alcoholRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "drugRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ],
          "enabled": true,
          "weaponRules": [
            {
              "action": "reject",
              "score": 90,
              "userScoreAdjustment": -10
            },
            {
              "action": "queuedForApproval",
              "score": 70,
              "userScoreAdjustment": -7
            },
            {
              "action": "allow",
              "alertType": "User",
              "score": 40,
              "userScoreAdjustment": -1
            }
          ]
        }
      },
      "defaultActionIsQueueForApproval": false,
      "dictionaryTags": [
        "whitelistA"
      ],
      "emailOnAlerts": false,
      "emailOnContentFlagged": false,
      "emailOnEscalations": false,
      "emailOnUserFlagged": false,
      "emailRules": [
        {
          "action": "allow",
          "score": 90
        },
        {
          "score": 70,
          "action": "allow"
        },
        {
          "score": 40,
          "action": "allow"
        }
      ],
      "filterRules": [
        {
          "highAction": "authorOnly",
          "highAlertType": "User",
          "locales": [],
          "mediumAction": "allow",
          "mildAction": "allow",
          "severeAction": "reject",
          "severeAlertType": "User",
          "tags": [
            "Vulgarity"
          ]
        },
        {
          "highAction": "allow",
          "highAlertType": "User",
          "locales": [
            "en"
          ],
          "mediumAction": "allow",
          "mildAction": "allow",
          "severeAction": "authorOnly",
          "severeAlertType": "User",
          "tags": [
            "Bullying"
          ]
        }
      ],
      "imageOnly": false,
      "keepAdditionalContentPercent": 1.0,
      "persistent": true,
      "phoneNumberRules": [
        {
          "action": "allow",
          "score": 90,
          "userScoreAdjustment": -10
        },
        {
          "alertType": "Content",
          "userScoreAdjustment": -5,
          "score": 70,
          "action": "allow"
        },
        {
          "score": 40,
          "alertType": "User",
          "userScoreAdjustment": -1,
          "action": "allow"
        }
      ],
      "proxy": {
        "connectTimeout": 2000,
        "enabled": true,
        "headers": {
          "Authorization": "APIKEY",
          "X-SomeHeader": "HeaderValue"
        },
        "httpAuthenticationPassword": "pass",
        "httpAuthenticationUsername": "user",
        "readTimeout": 4000,
        "sslCertificate": "-----BEGIN CERTIFICATE-----\nMIIDTzCCArigAwIBAgIJAMA7XJzxYkPUMA0GCSqGSIb3DQEBBQUAMHkxCzAJBgNV\nBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGZGVudmVyMRIwEAYDVQQKEwlp\nbnZlcnNvZnQxEjAQBgNVBAMTCWxvY2FsaG9zdDEkMCIGCSqGSIb3DQEJARYVc3Vw\ncG9ydEBpbnZlcnNvZnQuY29tMB4XDTE0MDQxMDE5NTA1MFoXDTE0MDUxMDE5NTA1\nMFoweTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNPMQ8wDQYDVQQHEwZkZW52ZXIx\nEjAQBgNVBAoTCWludmVyc29mdDESMBAGA1UEAxMJbG9jYWxob3N0MSQwIgYJKoZI\nhvcNAQkBFhVzdXBwb3J0QGludmVyc29mdC5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD\ngY0AMIGJAoGBAMZ0AasrmL41BOGhUOr1WVOUah5styok4NjXMRCyJWc7VEyt2lRW\nyaAQeIsR1wgmLJbo7YSC8gY4E9xfiIUqTwHK5bvDuS1T2jwsrIf0jaxjcB+Janol\nvWeVgIUTv5xuzWTWtFEjxwHoum/Ur/T8bigmPhiXwCMJTuP25bSB9Ov5AgMBAAGj\ngd4wgdswHQYDVR0OBBYEFFOEqiRBZtc1vgnC8Zi5QEa6rTDdMIGrBgNVHSMEgaMw\ngaCAFFOEqiRBZtc1vgnC8Zi5QEa6rTDdoX2kezB5MQswCQYDVQQGEwJVUzELMAkG\nA1UECBMCQ08xDzANBgNVBAcTBmRlbnZlcjESMBAGA1UEChMJaW52ZXJzb2Z0MRIw\nEAYDVQQDEwlsb2NhbGhvc3QxJDAiBgkqhkiG9w0BCQEWFXN1cHBvcnRAaW52ZXJz\nb2Z0LmNvbYIJAMA7XJzxYkPUMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD\ngYEAwXVTn4xPTK4LpAH5F6mjkPefLwuPb7r+oCBuMFjFlGyp3fUmxXIIDt5GhApI\niLTGDJCwZ2znJBzQBlvaCekkEedGq3kTrfpFs0T8DFxc6kMtb8v16JJlSVBXmdAm\nKYeduqsD+n+YjBqS2+08N1DBcpcYkHKi11yZWQ3scWoTsQQ=\n-----END CERTIFICATE-----",
        "url": "http://example.com"
      },
      "queuePersistentContent": false,
      "returnFilterMatches": false,
      "rules": {
        "usernameFilterRule": {
          "action": "reject",
          "enabled": false
        },
        "whitelistFilterRules": {
          "disallowedPhrase": {
            "action": "allow"
          },
          "disallowedWord": {
            "action": "allow"
          }
        }
      },
      "storeContent": true,
      "urlRules": [
        {
          "score": 90,
          "action": "allow"
        },
        {
          "action": "allow",
          "score": 70
        },
        {
          "score": 40,
          "action": "allow"
        }
      ],
      "urlWhitelistTags": [
        "tag1"
      ],
      "userCheckOutMinutes": 10,
      "userFlagUserScoreAdjustment": -3
    },
    "name": "Chat",
    "notificationServers": [
      {
        "connectTimeout": 1000,
        "id": 21,
        "url": "http://chat.example.com/notification-handler",
        "readTimeout": 2000
      }
    ]
  }
}

5. Delete an Application

This API is used to delete a CleanSpeak application.

Warning Deleting an application from CleanSpeak removes all of the configuration, content, history, users and any other data associated with that application. This operation is permanent and cannot be undone. If you have a large amount of content associated with this application the operation may take a considerable amount of time to complete.

5.1. Request

URI (3.x, deprecated in 4.0.0)

DELETE /system/application/{applicationId}

URI (4.x)

DELETE /api/system/application/{applicationId}

Table 12. Request Parameters

applicationId [UUID] Required

The Id of the Application to delete.

5.2. Response

Table 13. Response Codes
Code Description

200

The request was successful. The response will be empty.

400

The request was invalid and/or malformed. The response will contain an Errors JSON Object with the specific errors.

401

You did not supply a valid Authorization header. The header was omitted or your API key was not valid. The response will be empty. See Authentication.

402

Your license has expired. The response will be empty. Contact sales@cleanspeak.com for assistance.

404

The object you are trying to delete doesn’t exist. The response will be empty.

500

There was an internal error. A stack trace is provided and logged in the CleanSpeak log files. The response will be empty.

6. Quality Filter Rule

A rule to apply if a match exceeds the given score threshold.

Table 14. Request Body

action [String] Required

The action to be taken when this filter rule is applied. The possible values are:

  • allow

  • authorOnly

  • replace

  • queuedForApproval (Valid when storeContent and persistent are both set to true)

  • reject

The filter action must be equal to or less than the action for the next highest rule. For example if the high quality rule is set to allow then the only valid action for medium and lower quality matches is allow. This rule follows the general idea that there would be no reason to allow a high quality match but reject a low quality match.

alertType [String] Optional

The type of alert to be generated when this filter rule is applied. Omit this parameter to indicate no alert should be generated. The possible values are:

  • Content

  • User

score [Integer] Required

The quality score threshold for this rule. If a match score is greater than or equal to this number and less then the next highest filter rule score the rule will be applied.

userScoreAdjustment [Integer] Optional

The amount the User score is adjusted when this filter rule is applied. This value may be a positive or negative integer.