<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="commentanalyzer_v1alpha1.html">Perspective Comment Analyzer API</a> . <a href="commentanalyzer_v1alpha1.comments.html">comments</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#analyze">analyze(body, x__xgafv=None)</a></code></p>
<p class="firstline">Analyzes the provided text and returns scores for requested attributes.</p>
<p class="toc_element">
  <code><a href="#suggestscore">suggestscore(body, x__xgafv=None)</a></code></p>
<p class="firstline">Suggest comment scores as training data.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="analyze">analyze(body, x__xgafv=None)</code>
  <pre>Analyzes the provided text and returns scores for requested attributes.

Args:
  body: object, The request body. (required)
    The object takes the form of:

{ # The comment analysis request message.
    "comment": { # Represents a body of text. # The comment to analyze.
      "text": "A String", # UTF-8 encoded text.
      "type": "A String", # Type of the text field.
    },
    "doNotStore": True or False, # Do not store the comment or context sent in this request. By default, the
        # service may store comments/context for debugging purposes.
    "languages": [ # The language(s) of the comment and context (if none are specified, the
        # language is automatically detected). If multiple languages are specified,
        # the text is checked in all of them that are supported. Both ISO and BCP-47
        # language codes are accepted.
        # Current Language Restrictions:
        #  * Only English text ("en") is supported.
        # If none of the languages specified by the caller are supported, an
        # `UNIMPLEMENTED` error is returned.
      "A String",
    ],
    "sessionId": "A String", # Session ID. Used to join related RPCs into a single session. For example,
        # an interactive tool that calls both the AnalyzeComment and
        # SuggestCommentScore RPCs should set all invocations of both RPCs to the
        # same Session ID, typically a random 64-bit integer.
    "context": { # Context is typically something that a Comment is referencing or replying to # The context of the comment.
        # (such as an article, or previous comment).
        # Note: Populate only ONE OF the following fields. The oneof syntax cannot be
        # used because that would require nesting entries inside another message and
        # breaking backwards compatibility. The server will return an error if more
        # than one of the following fields is present.
      "articleAndParentComment": { # A type of context specific to a comment left on a single-threaded comment # Information about the source for which the original comment was made, and
          # any parent comment info.
          # message board, where comments are either a top level comment or the child of
          # a top level comment.
        "article": { # Represents a body of text. # The source content about which the comment was made (article text, article
            # summary, video transcript, etc).
          "text": "A String", # UTF-8 encoded text.
          "type": "A String", # Type of the text field.
        },
        "parentComment": { # Represents a body of text. # Refers to text that is a direct parent of the source comment, such as in a
            # one-deep threaded message board. This field will only be present for
            # comments that are replies to other comments and will not be populated for
            # direct comments on the article_text.
          "text": "A String", # UTF-8 encoded text.
          "type": "A String", # Type of the text field.
        },
      },
      "entries": [ # A list of messages. For example, a linear comments section or forum thread.
        { # Represents a body of text.
          "text": "A String", # UTF-8 encoded text.
          "type": "A String", # Type of the text field.
        },
      ],
    },
    "clientToken": "A String", # Opaque token that is echoed from the request to the response.
    "requestedAttributes": { # Specification of requested attributes. The AttributeParameters serve as
        # configuration for each associated attribute. The map keys are attribute
        # names. The following attributes are available:
        # "ATTACK_ON_AUTHOR" - Attack on author of original article or post.
        # "ATTACK_ON_COMMENTER" - Attack on fellow commenter.
        # "ATTACK_ON_PUBLISHER" - Attack on publisher of article/post.
        # "INCOHERENT" - Difficult to understand, nonsensical.
        # "INFLAMMATORY" - Intending to provoke or inflame.
        # "OBSCENE" - Obscene, such as cursing.
        # "OFF_TOPIC" - Not related to the original topic.
        # "SPAM" - Commercial/advertising spam content.
        # "UNSUBSTANTIAL" - Trivial.
      "a_key": { # Configurable parameters for attribute scoring.
        "scoreThreshold": 3.14, # Don't return scores for this attribute that are below this threshold. If
            # unset, a default threshold will be applied. A FloatValue wrapper is used to
            # distinguish between 0 vs. default/unset.
        "scoreType": "A String", # What type of scores to return. If unset, defaults to probability scores.
      },
    },
    "spanAnnotations": True or False, # An advisory parameter that will return span annotations if the model
        # is capable of providing scores with sub-comment resolution. This will
        # likely increase the size of the returned message.
    "communityId": "A String", # Optional identifier associating this AnalyzeCommentRequest with a
        # particular client's community. Different communities may have different
        # norms and rules. Specifying this value enables us to explore building
        # community-specific models for clients.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The comment analysis response message.
    "languages": [ # The language(s) used by CommentAnalyzer service to choose which Model to
        # use when analyzing the comment. Might better be called
        # "effective_languages". The logic used to make the choice is as follows:
        #   if Request.languages.empty()
        #     effective_languages = detected_languages
        #   else
        #     effective_languages = Request.languages
      "A String",
    ],
    "detectedLanguages": [ # Contains the languages detected from the text content, sorted in order of
        # likelihood.
      "A String",
    ],
    "attributeScores": { # Scores for the requested attributes. The map keys are attribute names (same
        # as the requested_attribute field in AnalyzeCommentRequest, for example
        # "ATTACK_ON_AUTHOR", "INFLAMMATORY", etc).
      "a_key": { # This holds score values for a single attribute. It contains both per-span
          # scores as well as an overall summary score..
        "summaryScore": { # Analysis scores are described by a value and a ScoreType. # Overall score for comment as a whole.
          "type": "A String", # The type of the above value.
          "value": 3.14, # Score value. Semantics described by type below.
        },
        "spanScores": [ # Per-span scores.
          { # This is a single score for a given span of text.
            "begin": 42, # "begin" and "end" describe the span of the original text that the attribute
                # score applies to. The values are the UTF-16 codepoint range. "end" is
                # exclusive. For example, with the text "Hi there", the begin/end pair (0,2)
                # describes the text "Hi".
                #
                # If "begin" and "end" are unset, the score applies to the full text.
            "score": { # Analysis scores are described by a value and a ScoreType. # The score value.
              "type": "A String", # The type of the above value.
              "value": 3.14, # Score value. Semantics described by type below.
            },
            "end": 42,
          },
        ],
      },
    },
    "clientToken": "A String", # Same token from the original AnalyzeCommentRequest.
  }</pre>
</div>

<div class="method">
    <code class="details" id="suggestscore">suggestscore(body, x__xgafv=None)</code>
  <pre>Suggest comment scores as training data.

Args:
  body: object, The request body. (required)
    The object takes the form of:

{ # The comment score suggestion request message.
    "comment": { # Represents a body of text. # The comment being scored.
      "text": "A String", # UTF-8 encoded text.
      "type": "A String", # Type of the text field.
    },
    "languages": [ # The language(s) of the comment and context (if none are specified, the
        # language is automatically detected). If multiple languages are specified,
        # the text is checked in all of them that are supported. Both ISO and BCP-47
        # language codes are accepted.
        # Current Language Restrictions:
        #  * Only English text ("en") is supported.
        # If none of the languages specified by the caller are supported, an
        # `UNIMPLEMENTED` error is returned.
      "A String",
    ],
    "sessionId": "A String", # Session ID. Used to join related RPCs into a single session. For example,
        # an interactive tool that calls both the AnalyzeComment and
        # SuggestCommentScore RPCs should set all invocations of both RPCs to the
        # same Session ID, typically a random 64-bit integer.
    "context": { # Context is typically something that a Comment is referencing or replying to # The context of the comment.
        # (such as an article, or previous comment).
        # Note: Populate only ONE OF the following fields. The oneof syntax cannot be
        # used because that would require nesting entries inside another message and
        # breaking backwards compatibility. The server will return an error if more
        # than one of the following fields is present.
      "articleAndParentComment": { # A type of context specific to a comment left on a single-threaded comment # Information about the source for which the original comment was made, and
          # any parent comment info.
          # message board, where comments are either a top level comment or the child of
          # a top level comment.
        "article": { # Represents a body of text. # The source content about which the comment was made (article text, article
            # summary, video transcript, etc).
          "text": "A String", # UTF-8 encoded text.
          "type": "A String", # Type of the text field.
        },
        "parentComment": { # Represents a body of text. # Refers to text that is a direct parent of the source comment, such as in a
            # one-deep threaded message board. This field will only be present for
            # comments that are replies to other comments and will not be populated for
            # direct comments on the article_text.
          "text": "A String", # UTF-8 encoded text.
          "type": "A String", # Type of the text field.
        },
      },
      "entries": [ # A list of messages. For example, a linear comments section or forum thread.
        { # Represents a body of text.
          "text": "A String", # UTF-8 encoded text.
          "type": "A String", # Type of the text field.
        },
      ],
    },
    "clientToken": "A String", # Opaque token that is echoed from the request to the response.
    "communityId": "A String", # Optional identifier associating this comment score suggestion with a
        # particular sub-community. Different communities may have different norms
        # and rules. Specifying this value enables training community-specific
        # models.
    "attributeScores": { # Attribute scores for the comment. The map keys are attribute names, same as
        # the requested_attribute field in AnalyzeCommentRequest (for example
        # "ATTACK_ON_AUTHOR", "INFLAMMATORY", etc.). This field has the same type as
        # the `attribute_scores` field in AnalyzeCommentResponse.
        # 
        # To specify an overall attribute score for the entire comment as a whole,
        # use the `summary_score` field of the mapped AttributeScores object. To
        # specify scores on specific subparts of the comment, use the `span_scores`
        # field. All SpanScore objects must have begin and end fields set.
        # 
        # All Score objects must be explicitly set (for binary classification, use
        # the score values 0 and 1). If Score objects don't include a ScoreType,
        # `PROBABILITY` is assumed.
        # 
        # `attribute_scores` must not be empty. The mapped AttributeScores objects
        # also must not be empty. An `INVALID_ARGUMENT` error is returned for all
        # malformed requests.
      "a_key": { # This holds score values for a single attribute. It contains both per-span
          # scores as well as an overall summary score..
        "summaryScore": { # Analysis scores are described by a value and a ScoreType. # Overall score for comment as a whole.
          "type": "A String", # The type of the above value.
          "value": 3.14, # Score value. Semantics described by type below.
        },
        "spanScores": [ # Per-span scores.
          { # This is a single score for a given span of text.
            "begin": 42, # "begin" and "end" describe the span of the original text that the attribute
                # score applies to. The values are the UTF-16 codepoint range. "end" is
                # exclusive. For example, with the text "Hi there", the begin/end pair (0,2)
                # describes the text "Hi".
                #
                # If "begin" and "end" are unset, the score applies to the full text.
            "score": { # Analysis scores are described by a value and a ScoreType. # The score value.
              "type": "A String", # The type of the above value.
              "value": 3.14, # Score value. Semantics described by type below.
            },
            "end": 42,
          },
        ],
      },
    },
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The comment score suggestion response message.
    "requestedLanguages": [ # The list of languages provided in the request.
      "A String",
    ],
    "detectedLanguages": [ # The list of languages detected from the comment text.
      "A String",
    ],
    "clientToken": "A String", # Same token from the original SuggestCommentScoreRequest.
  }</pre>
</div>

</body></html>