openapi: 3.0.3
servers:
  - url: https://api.symanto.net
info:
  contact:
    email: support@symanto.net
    name: Symanto Support
    url: https://developers.symanto.net
  description: We aim to provide the deepest understanding of people through psychology & AI
  termsOfService: https://developers.symanto.net/terms-of-service
  title: Psycholinguistic Text Analytics
  version: "1.0"
  x-apisguru-categories:
    - text
  x-logo:
    backgroundColor: "#FFFFFF"
    url: https://www.symanto.com/wp-content/uploads/2020/06/symanto.svg
  x-origin:
    - format: openapi
      url: https://api.symanto.net/docs/v1/openapi.json
      version: "3.0"
  x-providerName: symanto.net
security:
  - apiKeyHeader: []
paths:
  /communication:
    post:
      description: |-
        Identify the purpose and writing style of a written text.

        Supported Languages: [`ar`, `de`, `en`, `es`, `fr`, `it`, `nl`, `pt`, `ru`, `tr`, `zh`]

        Returned labels:
        * action-seeking
        * fact-oriented
        * information-seeking
        * self-revealing
      operationId: communication
      parameters:
        - explode: true
          in: query
          name: all
          required: false
          schema:
            default: false
            type: boolean
          style: form
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PostRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PredictionResults"
          description: Successful Response
        "422":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ValidationErrors"
          description: Validation Error
      summary: Communication & Tonality
      tags:
        - Text Analysis
  /ekman-emotion:
    post:
      description: |-
        Detect the emotions of the text based on Ekman.

        Supported Langauges: [`en`, `de`, `es`]

        Returned labels:
        * anger
        * disgust
        * fear
        * joy
        * sadness
        * surprise
        * no-emotion
      operationId: ekman-emotion
      parameters:
        - explode: true
          in: query
          name: all
          required: false
          schema:
            default: false
            type: boolean
          style: form
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PostRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PredictionResults"
          description: Successful Response
        "422":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ValidationErrors"
          description: Validation Error
      summary: Emotion Analysis
      tags:
        - Text Analysis
  /emotion:
    post:
      description: |-
        Detect the emotions of the text.

        Supported Langauges: [`en`, `de`, `es`]

        Returned labels:
        * anger
        * joy
        * love
        * sadness
        * surprise
        * uncategorized
      operationId: emotion
      parameters:
        - explode: true
          in: query
          name: all
          required: false
          schema:
            default: false
            type: boolean
          style: form
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PostRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PredictionResults"
          description: Successful Response
        "422":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ValidationErrors"
          description: Validation Error
      summary: Emotion Analysis
      tags:
        - Text Analysis
  /language-detection:
    post:
      description: |-
        Identifies what language a text is written in. Only languages that our API supports can be analyzed.

        Returned labels:
        * language_code of the detected language
      operationId: language-detection
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LanguageDetectionRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LanguageDetectionResponse"
          description: Successful Response
        "422":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ValidationErrors"
          description: Validation Error
      summary: Language Detection
      tags:
        - Text Analysis
  /personality:
    post:
      description: |-
        Predict the personality trait of author of any written text.

        Supported Languages: [`ar`, `de`, `en`, `es`, `fr`, `it`, `nl`, `pt`, `ru`, `tr`, `zh`]

        Returned labels:

        * emotional
        * rational
      operationId: personality
      parameters:
        - explode: true
          in: query
          name: all
          required: false
          schema:
            default: false
            type: boolean
          style: form
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PostRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PredictionResults"
          description: Successful Response
        "422":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ValidationErrors"
          description: Validation Error
      summary: Personality Traits
      tags:
        - Text Analysis
  /sentiment:
    post:
      description: |-
        Evaluate the overall tonality of the text.

        Supported Languages: [`en`, `de`, `es`]

        Returned labels:
        * positive
        * negative
      operationId: sentiment
      parameters:
        - explode: true
          in: query
          name: all
          required: false
          schema:
            default: false
            type: boolean
          style: form
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PostRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PredictionResults"
          description: Successful Response
        "422":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ValidationErrors"
          description: Validation Error
      summary: Sentiment Analysis
      tags:
        - Text Analysis
  /topic-sentiment:
    post:
      operationId: topic-sentiment
      parameters:
        - description: Provide analysis domain for better extraction (optional)
          explode: true
          in: query
          name: domain
          required: false
          schema:
            enum:
              - Ecom
              - Employee
              - Hotel
              - Restaurant
            type: string
          style: form
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PostRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TopicSentimentResponse"
          description: ""
      summary: Extracts topics and sentiments and relates them.
      tags:
        - Text Analysis
components:
  schemas:
    LanguageDetection:
      properties:
        id:
          description: id of the text.
          type: string
        text:
          description: the text itself.
          type: string
      required:
        - text
      type: object
    LanguageDetectionRequest:
      items:
        $ref: "#/components/schemas/LanguageDetection"
      maxItems: 64
      minItems: 1
      type: array
    LanguageDetectionResponse:
      items:
        $ref: "#/components/schemas/LanguagePredicted"
      type: array
    LanguagePredicted:
      properties:
        detected_language:
          description: the detected language_code corresponding to the input text.
          type: string
        id:
          description: id of the post.
          type: string
      required:
        - detected_language
      title: LanguagePredicted
      type: object
    Post:
      properties:
        id:
          description: id of the post.
          example: "1"
          type: string
        language:
          description: language_code of the text.
          example: en
          type: string
        text:
          description: the text to be analysed.
          example: I love the service
          type: string
      required:
        - language
        - text
      title: Post
      type: object
    PostPredicted:
      properties:
        id:
          description: id of the post.
          type: string
        predictions:
          description: the list of predictions.
          items:
            $ref: "#/components/schemas/Prediction"
          type: array
      required:
        - predictions
      title: PostPredicted
      type: object
    PostRequest:
      items:
        $ref: "#/components/schemas/Post"
      maxItems: 32
      minItems: 1
      title: Posts
      type: array
    Prediction:
      properties:
        prediction:
          description: the predicted label.
          title: Prediction
          type: string
        probability:
          description: the probability of the predicted label.
          title: Probability
          type: number
      required:
        - prediction
        - probability
      title: Prediction
      type: object
    PredictionResults:
      items:
        $ref: "#/components/schemas/PostPredicted"
      title: Prediction Results
      type: array
    Sentiment:
      properties:
        category:
          type: string
        end:
          format: int32
          type: integer
        negationTerm:
          type: string
        parentCategory:
          type: string
        positive:
          type: boolean
        scale:
          format: double
          type: number
        start:
          format: int32
          type: integer
        text:
          type: string
      type: object
    Topic:
      properties:
        category:
          type: string
        end:
          format: int32
          type: integer
        polarity:
          format: double
          type: number
        start:
          format: int32
          type: integer
        text:
          type: string
        topic:
          type: string
      type: object
    TopicSentiment:
      properties:
        sentence:
          type: string
        sentiment:
          $ref: "#/components/schemas/Sentiment"
        topic:
          $ref: "#/components/schemas/Topic"
      type: object
    TopicSentimentOutput:
      properties:
        id:
          type: string
        language:
          type: string
        sentiments:
          items:
            $ref: "#/components/schemas/Sentiment"
          type: array
        text:
          type: string
        topicSentiments:
          items:
            $ref: "#/components/schemas/TopicSentiment"
          type: array
        topics:
          items:
            $ref: "#/components/schemas/Topic"
          type: array
      type: object
    TopicSentimentResponse:
      items:
        $ref: "#/components/schemas/TopicSentimentOutput"
      type: array
    ValidationError:
      properties:
        loc:
          items:
            type: string
          title: Location
          type: array
        msg:
          title: Message
          type: string
        type:
          title: Error Type
          type: string
      required:
        - loc
        - msg
        - type
      title: ValidationError
      type: object
    ValidationErrors:
      properties:
        detail:
          items:
            $ref: "#/components/schemas/ValidationError"
          title: Detail
          type: array
      title: ValidationErrors
      type: object
  securitySchemes:
    apiKeyHeader:
      in: header
      name: x-api-key
      type: apiKey
