All Downloads are FREE. Search and download functionalities are using the official Maven repository.

1_55_4.agent-api-public-deprecated.yaml Maven / Gradle / Ivy

There is a newer version: 8.0.5
Show newest version
swagger: '2.0'
info:
  version: '1.55.4'
  title: Agent API
  description: |
    This document refers to Symphony API calls to send and receive messages
    and content. They need the on-premise Agent installed to perform
    decryption/encryption of content.

    - sessionToken and keyManagerToken can be obtained by calling the
    authenticationAPI on the symphony back end and the key manager
    respectively. Refer to the methods described in authenticatorAPI.yaml.
    - Actions are defined to be atomic, ie will succeed in their entirety
    or fail and have changed nothing.
    - If it returns a 40X status then it will have sent no message to any
    stream even if a request to aome subset of the requested streams
    would have succeeded.
    - If this contract cannot be met for any reason then this is an error
    and the response code will be 50X.
    - MessageML is a markup language for messages. See reference here:
    https://rest-api.symphony.com/docs/messagemlv2

paths:
  '/v4/datafeed/create':
    post:
      summary: Create a new real time message event stream.
      description: |
          A datafeed provides the messages in all conversations that a user is in.
          This also includes system messages like new users joining a chatroom.

          A datafeed will expire if it isn't read before its capacity is reached.
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
      consumes:
        - application/json
      produces:
        - application/json
      tags:
        - Datafeed
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/Datafeed'
        '400':
          description: 'Client error.'
          schema:
            $ref: '#/definitions/V2Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/V2Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/V2Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
        '503':
          description: 'Max number of data feeds reached.'
          schema:
            $ref: '#/definitions/V2Error'
  '/v4/datafeed/{id}/read':
    get:
      summary: Read a given datafeed.
      description: |
          Read messages from the given datafeed. If no more messages are available then this method will block.
          It is intended that the client should re-call this method as soon as it has processed the messages
          received in the previous call. If the client is able to consume messages more quickly than they become
          available then each call will initially block, there is no need to delay before re-calling this method.

          A datafeed will expire if its unread capacity is reached.
          A datafeed can only be consumed by one client thread at a time. E.g. polling the datafeed by two threads may lead to messages being delivered out of order.
      parameters:
      - name: id
        description: |
          Datafeed ID
        in: path
        required: true
        type: string
      - name: limit
        description: |
            Max No. of messages to return.
        in: query
        type: integer
      - name: sessionToken
        description: Session authentication token.
        in: header
        required: true
        type: string
      - name: keyManagerToken
        description: Key Manager authentication token.
        in: header
        required: true
        type: string
      consumes:
        - application/json
      produces:
        - application/json
      tags:
        - Datafeed
      responses:
        '200':
          description: List of messages that have occurred since last time this URL was polled. If the list is empty, it means the request has reached its timeout, and the client should poll again.
          schema:
            $ref: '#/definitions/V4EventList'
        '204':
          description: No Messages.
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/V2Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/V2Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
  '/v2/HealthCheck':
     get:
       summary: Checks the health of the Agent.
       description: |
           Used to validate the configuration of the agent.
           Makes a request to the HealthCheck on the Symphony cloud.
           Makes a request to the HealthCheck on the Key Manager service.
           Encryts and decrypts a message inside either agent or user SbeSession with wall thread id.
       parameters:
       - name: showFirehoseErrors
         description: |
            Flag to set if Firehose Service connectivity errors will show on Agent's healthcheck or not.
            Default is "false", so no errors will show up if connectivity check isn't successful.
         in: query
         required: false
         type: boolean
       - name: sessionToken
         description: Session authentication token.
         in: header
         required: false
         type: string
       - name: keyManagerToken
         description: Key Manager authentication token.
         in: header
         required: false
         type: string
       consumes:
         - application/json
       produces:
         - application/json
       tags:
         - System
       responses:
         '200':
           description: The Agent is functioning properly.
           schema:
             $ref: '#/definitions/V2HealthCheckResponse'
  '/v4/message/import':
    post:
      summary: Import messages from other systems into Symphony.
      description: |
        Sends a message to be imported into the system.
        Allows you to override the timestamp and author of the message with your desired values.
        The requesting user must have the Content Management role.
        The user that the message is intended to have come from must also be present in the conversation.
        The intended message timestamp must be a valid time from the past. It cannot be a future timestamp.
        Optionally the original message ID can be specified to identify the imported message for the purpose of repeat imports.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: messageList
          in: body
          required: true
          schema:
            $ref: '#/definitions/V4MessageImportList'
      tags:
        - Messages
      responses:
        '200':
          description: Message sent.
          schema:
            $ref: '#/definitions/V4ImportResponseList'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/V2Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/V2Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
  '/v1/message/{id}':
    get:
      summary: Get a message by ID
      produces:
        - application/json
      parameters:
          - name: sessionToken
            description: Session authentication token.
            in: header
            required: true
            type: string
          - name: keyManagerToken
            description: Key Manager authentication token.
            in: header
            required: true
            type: string
          - name: id
            description: Message ID as a URL-safe string
            in: path
            required: true
            type: string
      tags:
        - Messages
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V4Message'
        '204':
          description: No Messages.
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/V2Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/V2Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
  '/v1/message/search':
    get:
      summary: Search messages
      description: |
          Search messages according to the specified criteria. The "query" parameter takes a search query defined as
          "field:value" pairs combined by the operator "AND" (e.g. "text:foo AND autor:bar"). Supported fields are
           (case-insensitive): "text", "author", "hashtag", "cashtag", "mention", "signal", "fromDate", "toDate",
           "streamId", "streamType".
           "text" search requires a "streamId" to be specified.
           "streamType" accepts one of the following values: "chat" (IMs and MIMs), "im", "mim", "chatroom", "post".
           "signal" queries can only be combined with "fromDate", "toDate", "skip" and "limit" parameters.
      produces:
        - application/json
      parameters:
        - name: query
          description: |
            The search query. See above for the query syntax.
          in: query
          type: string
          required: true
        - name: skip
          description: |
            No. of results to skip.
          in: query
          type: integer
        - name: limit
          description: |
            Max no. of results to return. If no value is provided, 50 is the default.
          in: query
          type: integer
          required: false
        - name: scope
          description: |
            Describes where content should be searched for that query.
            It can exclusively apply to Symphony content or to one Connector.
          in: query
          type: string
        - name: sortDir
          description: |
            Messages sort direction : ASC or DESC (default to DESC)
          in: query
          type: string
          required: false
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
      tags:
        - Messages
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V4MessageList'
        '204':
          description: No Messages.
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/V2Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/V2Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
    post:
      summary: Search messages
      description: |
          Search messages according to the specified criteria.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: query
          description: |
            The search query. See above for the query syntax.
          in: body
          required: true
          schema:
            $ref: '#/definitions/MessageSearchQuery'
        - name: skip
          description: |
            No. of results to skip.
          in: query
          type: integer
        - name: limit
          description: |
            Max no. of results to return. If no value is provided, 50 is the default.
          in: query
          type: integer
          required: false
        - name: scope
          description: |
            Describes where content should be searched for that query.
            It can exclusively apply to Symphony content or to one Connector.
          in: query
          type: string
        - name: sortDir
          description: |
            Messages sort direction : ASC or DESC (default to DESC)
          in: query
          type: string
          required: false
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
      tags:
        - Messages
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V4MessageList'
        '204':
          description: No Messages.
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/V2Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/V2Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
  '/v1/stream/{sid}/attachment':
    get:
      summary: Download an attachment.
      description: |
        Downloads the attachment body by the attachment ID, stream ID, and message ID.
      consumes:
        - application/json
      produces:
        - application/octet-stream
      parameters:
        - name: sid
          description: Stream ID
          in: path
          required: true
          type: string
        - name: fileId
          description: The attachment ID (Base64-encoded)
          in: query
          required: true
          type: string
        - name: messageId
          description: The ID of the message containing the attachment
          in: query
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
      tags:
        - Attachments
      responses:
        '200':
          description: 'Attachment body as Base64 encoded string.'
          schema:
            type: string
            format: byte
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v4/stream/{sid}/message':
    get:
      summary: Get messages from an existing stream.
      description: |
          A caller can fetch all unseen messages by passing the timestamp of
          the last message seen as the since parameter and the number of messages
          with the same timestamp value already seen as the skip parameter. This
          means that every message will be seen exactly once even in the case that
          an additional message is processed with the same timestamp as the last
          message returned by the previous call, and the case where there are
          more than maxMessages with the same timestamp value.

          This method is intended for historic queries and is generally reliable
          but if guaranteed delivery of every message in real time is required
          then the equivilent firehose method should be called.
      produces:
        - application/json
      parameters:
        - name: sid
          description: |
            Stream ID
          in: path
          required: true
          type: string
        - name: since
          description: |
            Timestamp of first required message.

            This is a long integer value representing milliseconds since
            Jan 1 1970
          in: query
          required: true
          type: integer
          format: int64
        - name: skip
          description: |
            No. of messages to skip.
          in: query
          type: integer
        - name: limit
          description: |
            Max No. of messages to return. If no value is provided, 50 is the default. The maximum supported value is 500.
          in: query
          type: integer
          required: false
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
      tags:
        - Messages
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V4MessageList'
        '204':
          description: No Messages.
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/V2Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/V2Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
  '/v4/stream/{sid}/message/create':
    post:
      summary: Post a message to one existing stream.
      description: |
        Post a new message to the given stream. The stream can be a chatroom,
        an IM or a multiparty IM.

        You may include an attachment on the message.

        The message can be provided as MessageMLV2 or PresentationML. Both formats support Freemarker templates.

        The optional parameter "data" can be used to provide a JSON payload containing entity data.
        If the message contains explicit references to entity data (in "data-entity-id" element attributes),
        this parameter is required.

        If the message is in MessageML and fails schema validation
        a client error results

        If the message is sent then 200 is returned.

        Regarding authentication, you must either use the sessionToken which was created for delegated app access
        or both the sessionToken and keyManagerToken together.
      consumes:
        - multipart/form-data
      produces:
        - application/json
      parameters:
        - name: sid
          description: Stream ID
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Authorization token used to make delegated calls.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          type: string
          required: false
        - name: message
          description: The message payload in MessageML.
          in: formData
          type: string
          required: false
        - name: data
          description: Optional message data in EntityJSON.
          in: formData
          type: string
          required: false
        - name: version
          description: |
            Optional message version in the format "major.minor". If empty, defaults to the latest supported version.
          in: formData
          type: string
          required: false
        - name: attachment
          description: Optional file attachment.
          in: formData
          type: file
          required: false
        - name: preview
          description: Optional attachment preview.
          in: formData
          type: file
          required: false

      tags:
        - Messages
      responses:
        '200':
          description: Message sent.
          schema:
            $ref: '#/definitions/V4Message'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/V2Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/V2Error'
        '451':
          description: 'Compliance Issues found in message or file'
          schema:
            $ref: '#/definitions/V2Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
  '/v3/stream/{sid}/share':
    post:
      summary: PROVISIONAL -  Share a piece of content into Symphony
      description: |
        Given a 3rd party content (eg. news article), it can share to the given stream.
        The stream can be a chatroom, an IM or a multiparty IM.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sid
          description: Stream ID
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: false
          type: string
        - name: shareContent
          in: body
          required: true
          schema:
            $ref: '#/definitions/ShareContent'
      tags:
        - Share
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V2Message'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/util/echo':
    post:
      summary: Test endpoint, returns input.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: echoInput
          description: |
            Message in plain text
          in: body
          required: true
          schema:
            $ref: '#/definitions/SimpleMessage'
      tags:
        - Util
      responses:
        '200':
          description: Message sent.
          schema:
            $ref: '#/definitions/SimpleMessage'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/signals/list':
    get:
      summary: |
          List signals for the requesting user. This includes signals that the user has created and public signals
          to which they subscribed.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: false
          type: string
        - name: skip
          description: |
            No. of signals to skip.
          in: query
          type: integer
        - name: limit
          description: |
            Max no. of signals to return. If no value is provided, 50 is the default. The maximum supported value is 500.
          in: query
          type: integer
          required: false
      tags:
        - Signals
      responses:
        '200':
          description: List of signals for the requesting user.
          schema:
            $ref: '#/definitions/SignalList'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/V2Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/V2Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
  '/v1/signals/{id}/get':
    get:
      summary: Get details of the requested signal.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: false
          type: string
        - name: id
          description: |
            The ID of the signal to display.
          in: path
          required: true
          type: string
      tags:
        - Signals
      responses:
        '200':
          description: List of signals for the requesting user.
          schema:
            $ref: '#/definitions/Signal'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/V2Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/V2Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
  '/v1/signals/create':
    post:
      summary: Create a signal.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: false
          type: string
        - name: signal
          description: Signal definition.
          in: body
          required: true
          schema:
            $ref: '#/definitions/BaseSignal'
      tags:
        - Signals
      responses:
        '200':
          description: Signal created.
          schema:
            $ref: '#/definitions/Signal'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/V2Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/V2Error'
        '451':
          description: 'Compliance Issues found in signal'
          schema:
            $ref: '#/definitions/V2Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
  '/v1/signals/{id}/update':
    post:
      summary: Update a signal.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: false
          type: string
        - name: id
          description: The id of the signal.
          in: path
          required: true
          type: string
        - name: signal
          description: Signal definition.
          in: body
          required: true
          schema:
            $ref: '#/definitions/BaseSignal'
      tags:
        - Signals
      responses:
        '200':
          description: Signal updated.
          schema:
            $ref: '#/definitions/Signal'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/V2Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/V2Error'
        '451':
          description: 'Compliance Issues found in signal'
          schema:
            $ref: '#/definitions/V2Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
  '/v1/signals/{id}/delete':
    post:
      summary: Delete a signal.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: false
          type: string
        - name: id
          description: The id of the signal.
          in: path
          required: true
          type: string
      tags:
        - Signals
      responses:
        '200':
          description: Signal deleted.
          schema:
            $ref: '#/definitions/SuccessResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/V2Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/V2Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
  '/v1/signals/{id}/subscribe':
    post:
      summary: Subscribe to a Signal.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: false
          type: string
        - name: id
          description: The id of the signal.
          in: path
          required: true
          type: string
        - name: pushed
          description: Prevent the user to unsubscribe (only for bulk subscription)
          in: query
          required: false
          type: boolean
        - name: users
          description: UserIds to subscribe (only for bulk subscription)
          in: body
          required: false
          schema:
            type: array
            items:
              type: integer
              format: int64
      tags:
        - Signals
      responses:
        '200':
          description: Signal subscribed.
          schema:
            $ref: '#/definitions/ChannelSubscriptionResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/V2Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/V2Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
  '/v1/signals/{id}/unsubscribe':
    post:
      summary: Unsubscribe to a Signal.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: false
          type: string
        - name: id
          description: The id of the signal.
          in: path
          required: true
          type: string
        - name: users
          description: UserIds to unsubscribe (only for bulk unsubscription)
          in: body
          required: false
          schema:
            type: array
            items:
              type: integer
              format: int64
      tags:
        - Signals
      responses:
        '200':
          description: Signal unsubscribed.
          schema:
            $ref: '#/definitions/ChannelSubscriptionResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/V2Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/V2Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
  '/v1/signals/{id}/subscribers':
    get:
      summary: Get the subscribers of a signal
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: false
          type: string
        - name: id
          description: The id of the signal.
          in: path
          required: true
          type: string
        - name: skip
          description: No. of results to skip.
          in: query
          required: false
          type: integer
          default: 0
        - name: limit
          description: Max No. of subscribers to return. If no value is provided, 100 is the default.
          in: query
          required: false
          type: integer
          default: 100
      tags:
        - Signals
      responses:
        '200':
          description: Signal Subscribers.
          schema:
            $ref: '#/definitions/ChannelSubscriberResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/V2Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/V2Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
  '/v1/info':
    get:
      summary: Get information about the Agent
      consumes:
        - application/json
      produces:
        - application/json
      tags:
        - Signals
      responses:
        '200':
          description: Agent info.
          schema:
            $ref: '#/definitions/AgentInfo'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/V2Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/V2Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/V2Error'
  '/v1/dlp/policies':
    get:
      summary: Get all policies
      description: Get all policies
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: page
          in: query
          required: false
          type: integer
          format: int32
          description: Optional parameter to specify which page to return (default is 0)
        - name: limit
          in: query
          required: false
          type: integer
          format: int32
          description: |
            Optional parameter to specify the number of result to return per page, default is 50. Maximum is 50.
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V1DLPPoliciesCollectionResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
    post:
      summary: Creates a policy
      description: |
        Creates a new policy with dictionary references.

        At the time of policy creation, the caller should only provide - contentTypes, name, scopes and type. The rest of the information is populated automatically.

        Note - You need to enable the policy after creation to start enforcing the policy.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/V1DLPPolicyRequest'
          description: Details about the policy that should be created.
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V1DLPPolicyResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/dlp/policies/{policyId}':
    get:
      summary: Get a policy
      description: Get a policy
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: policyId
          in: path
          required: true
          type: string
          description: Unique dictionary identifier.
        - name: policyVersion
          in: query
          required: false
          type: string
          description: |
            Optional parameter, if set to be valid policy version number,  will return policy with specified policyVersion. Otherwise, return the latest policy.
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V1DLPPolicyResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
    put:
      summary: Updates a policy. Cannot be used for creation.
      description: |
        Update the policy (name, type, contentTypes, scopes) and also the dictionaries for a policy.
        Warning: If you send empty list of dictionaries during the update operation, then all the
        dictionaries for this policy are deleted and policy is automatically disabled.
        Note: The policy should already exist.
      consumes:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: policyId
          in: path
          required: true
          type: string
          description: Unique dictionary identifier.
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/V1DLPPolicyRequest'
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V1DLPPolicyResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
    delete:
      summary: Delete a policy
      description: |
        Delete a policy.
        Note: Only disabled policy can be deleted
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: policyId
          in: path
          required: true
          type: string
          description: Unique dictionary identifier.
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V1DLPPolicyResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/dlp/policies/{policyId}/enable':
    post:
      summary: Enables a policy.
      description: Enables a policy.
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: policyId
          in: path
          required: true
          type: string
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V1DLPPolicyResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/dlp/policies/{policyId}/disable':
    post:
      summary: Disables a policy.
      description: Disables a policy.
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: policyId
          in: path
          required: true
          type: string
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V1DLPPolicyResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/dlp/dictionaries':
    get:
      summary: Get all dictionary metadatas
      description: |
        Get all dictionary metadatas with the latest version. Each dictionary object will only contain meta data of the content.
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: page
          in: query
          required: false
          type: integer
          format: int32
          description: Optional parameter to specify which page to return (default is 0)
        - name: limit
          in: query
          required: false
          type: integer
          format: int32
          description: |
            Optional parameter to specify the number of result to return per page, default is 50. Maximum is 50.
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V1DLPDictionaryMetadataCollectionResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
    post:
      summary: Create a dictionary
      description: |
        Creates a dictionary with basic metadata and no content. Only "name" and "type" field is used to create a new dictionary entry.
      consumes:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/V1DLPDictionaryMetadataCreateRequest'
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V1DLPDictionaryMetadataResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/dlp/dictionaries/{dictId}':
    get:
      summary: Get dictionary metadata
      description: Get basic information for a dictionary.
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: dictId
          in: path
          required: true
          type: string
          description: Unique dictionary identifier
        - name: dictVersion
          in: query
          required: false
          type: string
          description: |
            If set to be valid dictionary version number, will return dictionary metadata with specified version. Otherwise, return the latest dictionary metadata.
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V1DLPDictionaryMetadataResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
    put:
      summary: Updates a dictionary
      description: |
        Updates the dictionary's basic metadata without content.
        This API cannot be used for creating a new dictionary.
        In case of update only "name" can be changed.
        Note: All related policies will also have versions updated.
      consumes:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: dictId
          in: path
          required: true
          type: string
          description: Unique dictionary identifier
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/V1DLPDictionaryMetadataUpdateRequest'
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V1DLPDictionaryMetadataResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
    delete:
      summary: Delete a dictionary
      description: |
        Deletes a dictionary.
        Note: All related policies will be affected.
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: dictId
          in: path
          required: true
          type: string
          description: Unique dictionary identifier
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: Success
          schema:
            # Deleted dictionary's metadata.
            $ref: '#/definitions/V1DLPDictionaryMetadataResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/dlp/dictionaries/{dictId}/data/download':
    get:
      summary: Downloads Base 64 encoded dictionary content.
      description: Downloads Base 64 encoded dictionary content.
      consumes:
        - application/json
      produces:
        - application/octet-stream
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: dictId
          in: path
          required: true
          type: string
          description: Unique dictionary identifier
        - name: dictVersion
          in: query
          required: false
          type: string
          description: |
            If set to be valid dictionary version number, will return dictionary with specified version. Otherwise, return the latest dictionary.
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: 'Attachment body as Base64 encoded string.'
          schema:
            type: string
            format: byte
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/dlp/dictionaries/{dictId}/data/upload':
    post:
      summary: Override dictionary content with provided content.
      description: Override dictionary content with provided content.
      consumes:
        - multipart/form-data
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: dictId
          in: path
          required: true
          type: string
          description: Unique dictionary identifier
        - name: data
          in: formData
          required: true
          type: file
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V1DLPDictionaryMetadataResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/dlp/violations/message':
    get:
      summary: Get violations as a result of policy enforcement on messages.
      description: |
        TBD
      produces:
        - application/json
      parameters:
        - name: startTime
          description: |
            Timestamp of the first required violation.
            This is a long integer value representing milliseconds since Jan 1 1970
          in: query
          required: true
          type: integer
          format: int64
        - name: endTime
          description: |
            Timestamp of the last required violation.
            This is a long integer value representing milliseconds since Jan 1 1970
            If unspecified, it will default to current time of the request.
          in: query
          required: false
          type: integer
          format: int64
        - name: next
          description: |
            Offset of the next chunk of violations. Value is null for the first request.
          in: query
          type: string
          required: false
        - name: limit
          description: |
            Max No. of violations to return. If no value is provided, 50 is the default. The maximum supported value is 500.
          in: query
          type: integer
          required: false
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
      tags:
        - Violations
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V1DLPViolationMessageResponse'
        '204':
          description: No Messages.
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'

  '/v1/dlp/violations/stream':
    get:
      summary: Get violations as a result of policy enforcement on streams.
      description: |
        TBD
      produces:
        - application/json
      parameters:
        - name: startTime
          description: |
            Timestamp of the first required violation.
            This is a long integer value representing milliseconds since Jan 1 1970
          in: query
          required: true
          type: integer
          format: int64
        - name: endTime
          description: |
            Timestamp of the last required violation.
            This is a long integer value representing milliseconds since Jan 1 1970
            If unspecified, it will default to current time of the request.
          in: query
          required: false
          type: integer
          format: int64
        - name: next
          description: |
            Offset of the next chunk of violations. Value is null for the first request.
          in: query
          type: string
          required: false
        - name: limit
          description: |
            Max No. of violations to return. If no value is provided, 50 is the default. The maximum supported value is 500.
          in: query
          type: integer
          required: false
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
      tags:
        - Violations
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V1DLPViolationStreamResponse'
        '204':
          description: No Messages.
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'

  '/v1/dlp/violations/signal':
    get:
      summary: Get violations as a result of policy enforcement on signals.
      description: |
        TBD
      produces:
        - application/json
      parameters:
        - name: startTime
          description: |
            Timestamp of the first required violation.
            This is a long integer value representing milliseconds since Jan 1 1970
          in: query
          required: true
          type: integer
          format: int64
        - name: endTime
          description: |
            Timestamp of the last required violation.
            This is a long integer value representing milliseconds since Jan 1 1970
            If unspecified, it will default to current time of the request.
          in: query
          required: false
          type: integer
          format: int64
        - name: next
          description: |
            Offset of the next chunk of violations. Value is null for the first request.
          in: query
          type: string
          required: false
        - name: limit
          description: |
            Max No. of violations to return. If no value is provided, 50 is the default. The maximum supported value is 500.
          in: query
          type: integer
          required: false
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
      tags:
        - Violations
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V1DLPViolationSignalResponse'
        '204':
          description: No Messages.
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'

  '/v3/dlp/policies':
    get:
      summary: Get all policies
      description: Get all policies
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: page
          in: query
          required: false
          type: integer
          format: int32
          description: Optional parameter to specify which page to return (default is 0)
        - name: limit
          in: query
          required: false
          type: integer
          format: int32
          description: |
            Optional parameter to specify the number of result to return per page, default is 50. Maximum is 50.
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V3DLPPoliciesCollectionResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
    post:
      summary: Creates a policy
      description: |
        Creates a new policy with dictionary references.
        At the time of policy creation, the caller should only provide - contentTypes, name, scopes and type.
        The rest of the information is populated automatically.
        Note - You need to enable the policy after creation to start enforcing the policy.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/V3DLPPolicyRequest'
          description: Details about the policy that should be created.
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V3DLPPolicyResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v3/dlp/policies/{policyId}':
    get:
      summary: Get a policy
      description: Get a policy
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: policyId
          in: path
          required: true
          type: string
          description: Unique dictionary identifier.
        - name: policyVersion
          in: query
          required: false
          type: string
          description: |
            Optional parameter, if set to be valid policy version number,  will return policy with specified policyVersion. Otherwise, return the latest policy.
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V3DLPPolicyResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v3/dlp/policies/{policyId}/update':
    post:
      summary: Updates a policy. Cannot be used for creation.
      description: |
        Update the policy (name, type, contentTypes, scopes) and also the dictionaries for a policy.
        Warning: If you send empty list of dictionaries during the update operation, then all the
        dictionaries for this policy are deleted and policy is automatically disabled.
        Note: The policy should already exist.
      consumes:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: policyId
          in: path
          required: true
          type: string
          description: Unique dictionary identifier.
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/V3DLPPolicyRequest'
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V3DLPPolicyResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v3/dlp/policies/{policyId}/delete':
    post:
      summary: Delete a policy
      description: |
        Delete a policy.
        Note: Only disabled policy can be deleted
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: policyId
          in: path
          required: true
          type: string
          description: Unique dictionary identifier.
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V3DLPPolicyResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v3/dlp/policies/{policyId}/enable':
    post:
      summary: Enables a policy.
      description: Enables a policy.
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: policyId
          in: path
          required: true
          type: string
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V3DLPPolicyResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v3/dlp/policies/{policyId}/disable':
    post:
      summary: Disables a policy.
      description: Disables a policy.
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: policyId
          in: path
          required: true
          type: string
      tags:
        - DLP Policies and Dictionary Management
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V3DLPPolicyResponse'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v3/dlp/violations/message':
    get:
      summary: Get violations as a result of policy enforcement on messages.
      description: Retrieves DLP v3 message related violations for a given time range
      produces:
        - application/json
      parameters:
        - name: startTime
          description: |
            Timestamp of the first required violation.
            This is a long integer value representing milliseconds since Jan 1 1970
          in: query
          required: true
          type: integer
          format: int64
        - name: endTime
          description: |
            Timestamp of the last required violation.
            This is a long integer value representing milliseconds since Jan 1 1970
            If unspecified, it will default to current time of the request.
          in: query
          required: false
          type: integer
          format: int64
        - name: next
          description: |
            Offset of the next chunk of violations. Value is null for the first request.
          in: query
          type: string
          required: false
        - name: limit
          description: |
            Max No. of violations to return. If no value is provided, 50 is the default. The maximum supported value is 500.
          in: query
          type: integer
          required: false
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
      tags:
        - Violations
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V3DLPViolationMessageResponse'
        '204':
          description: No Messages.
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'

  '/v3/dlp/violations/stream':
    get:
      summary: Get violations as a result of policy enforcement on streams.
      description: Retrieves DLP v3 signal related violations for a given time range
      produces:
        - application/json
      parameters:
        - name: startTime
          description: |
            Timestamp of the first required violation.
            This is a long integer value representing milliseconds since Jan 1 1970
          in: query
          required: true
          type: integer
          format: int64
        - name: endTime
          description: |
            Timestamp of the last required violation.
            This is a long integer value representing milliseconds since Jan 1 1970
            If unspecified, it will default to current time of the request.
          in: query
          required: false
          type: integer
          format: int64
        - name: next
          description: |
            Offset of the next chunk of violations. Value is null for the first request.
          in: query
          type: string
          required: false
        - name: limit
          description: |
            Max No. of violations to return. If no value is provided, 50 is the default. The maximum supported value is 500.
          in: query
          type: integer
          required: false
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
      tags:
        - Violations
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V3DLPViolationStreamResponse'
        '204':
          description: No Messages.
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'

  '/v3/dlp/violations/signal':
    get:
      summary: Get violations as a result of policy enforcement on signals.
      description: Retrieves DLP v3 signal related violations for a given time range
      produces:
        - application/json
      parameters:
        - name: startTime
          description: |
            Timestamp of the first required violation.
            This is a long integer value representing milliseconds since Jan 1 1970
          in: query
          required: true
          type: integer
          format: int64
        - name: endTime
          description: |
            Timestamp of the last required violation.
            This is a long integer value representing milliseconds since Jan 1 1970
            If unspecified, it will default to current time of the request.
          in: query
          required: false
          type: integer
          format: int64
        - name: next
          description: |
            Offset of the next chunk of violations. Value is null for the first request.
          in: query
          type: string
          required: false
        - name: limit
          description: |
            Max No. of violations to return. If no value is provided, 50 is the default. The maximum supported value is 500.
          in: query
          type: integer
          required: false
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
      tags:
        - Violations
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V3DLPViolationSignalResponse'
        '204':
          description: No Messages.
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'

  '/v3/dlp/violation/attachment':
    get:
      summary: Get attachments that were sent as part of messages that were flagged by the DLP System.
      description: Retrieves attachments from related message violations as a base64 encoded String.
      produces:
        - application/octet-stream
      parameters:
        - name: fileId
          description: |
            ID of attachment that will be downloaded.
          in: query
          required: true
          type: string
        - name: violationId
          description: |
            ID of violation that corresponds to the flagged message that contains the attachment
          in: query
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
      tags:
        - Violations
      responses:
        '200':
          description: Attachment body as Base64 encoded string.
          schema:
            type: string
            format: byte
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '404':
          description: 'Resource not found.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'

  '/v1/audittrail/privilegeduser':
    get:
      summary: Get a list of  actions performed by a privileged account acting as privileged user given a period of time.
      description: Get a list of actions performed by a privileged account acting as privileged user given a period of time.
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: startTimestamp
          description: |
            Start timestamp in unix timestamp in millseconds.
          in: query
          required: true
          type: integer
          format: int64
        - name: endTimestamp
          description: |
            End timestamp in unix timestamp in millseconds.
            If not specified, it assumes to be current time.
          in: query
          required: false
          type: integer
          format: int64
        - name: before
          description: |
            Return results from an opaque “before” cursor value as presented via a response cursor.
          in: query
          type: string
          required: false
        - name: after
          description: |
            Return results from an opaque “after” cursor value as presented via a response cursor.
          in: query
          type: string
          required: false
        - name: limit
          description: |
            Max No. of violations to return. If no value is provided, 50 is the default.
            Some maximums for limit may be enforced for performance reasons.
            The maximum supported value is 500.
          in: query
          type: integer
          required: false
        - name: initiatorId
          description: |
            If present, only the initiator with this initiator  will be returned.
          in: query
          type: integer
          format: int64
        - name: role
          description: |
            If present, only the audit trail initiated by s user with privileged role acting as
            privileged user will be returned.
            Privileged eliglible roles:
            User Provisioning (USER_PROVISIONING),
            Content Management (CONTENT_MANAGEMENT),
            Expression Filter Policy Management (EF_POLICY_MANAGEMENT),
            SCO (SUPER_COMPLIANCE_OFFICER),
            CO (COMPLIANCE_OFFICER),
            Super admin (SUPER_ADMINISTRATOR),
            Admin (ADMINISTRATOR),
            L1 (L1_SUPPORT),
            L2 (L2_SUPPORT),
            Scope Manager (SCOPE_MANAGEMENT)
          in: query
          type: string
          required: false
      tags:
        - AuditTrail
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V1AuditTrailInitiatorList'
        '204':
          description: No Messages.
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
#
# Deprecated paths
#
  '/v1/datafeed/create':
    post:
      deprecated: true
      summary: Create a new real time message event stream.
      description: |
          A datafeed provides the messages in all conversations that a user is in.
          System messages like new users joining a chatroom are not part of the datafeed.

          A datafeed will expire after if it isn't read before its capacity is reached.
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
      consumes:
        - application/json
      produces:
        - application/json
      tags:
        - Datafeed
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/Datafeed'
          headers:
            X-Warning:
              description: This method is deprecated
              type: string
        '400':
          description: 'Client error.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '503':
          description: 'Max number of data feeds reached.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/datafeed/{id}/read':
    get:
      deprecated: true
      summary: Read a given datafeed.
      description: |
          Read messages from the given datafeed. If no more messages are available then this method will block.
          It is intended that the client should re-call this method as soon as it has processed the messages
          received in the previous call. If the client is able to consume messages more quickly than they become
          available then each call will initially block, there is no need to delay before re-calling this method.

          A datafeed will expire if its unread capacity is reached.
          A datafeed can only be consumed by one client thread at a time. E.g. polling the datafeed by two threads may lead to messages being delivered out of order.
      parameters:
      - name: id
        description: |
          Datafeed ID
        in: path
        required: true
        type: string
      - name: maxMessages
        description: |
            Max No. of messages to return.
        in: query
        type: integer
      - name: sessionToken
        description: Session authentication token.
        in: header
        required: true
        type: string
      - name: keyManagerToken
        description: Key Manager authentication token.
        in: header
        required: true
        type: string
      consumes:
        - application/json
      produces:
        - application/json
      tags:
        - Datafeed
      responses:
        '200':
          description: List of messages that have occurred since last time this URL was polled. If the list is empty, it means the request has reached its timeout, and the client should poll again.
          schema:
            $ref: '#/definitions/MessageList'
          headers:
            X-Warning:
              description: This method is deprecated
              type: string
        '204':
          description: No Messages.
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/HealthCheck':
    get:
      deprecated: true
      summary: Checks the health of the Agent.
      description: |
          Used to validate the configuration of the agent.
          Makes a request to the HealthCheck on the Symphony cloud.
          Makes a request to the HealthCheck on the Key Manager service.
      produces:
        - application/json
      tags:
        - System
      responses:
        '200':
          description: The Agent is functioning properly.
          schema:
            $ref: '#/definitions/V1HealthCheckResponse'
          headers:
            X-Warning:
              description: This method is deprecated
              type: string
  '/v2/datafeed/{id}/read':
    get:
      deprecated: true
      summary: Read a given datafeed.
      description: |
          Read messages from the given datafeed. If no more messages are available then this method will block.
          It is intended that the client should re-call this method as soon as it has processed the messages
          received in the previous call. If the client is able to consume messages more quickly than they become
          available then each call will initially block, there is no need to delay before re-calling this method.

          A datafeed will expire if its unread capacity is reached.
          A datafeed can only be consumed by one client thread at a time. E.g. polling the datafeed by two threads may lead to messages being delivered out of order.
      parameters:
      - name: id
        description: |
          Datafeed ID
        in: path
        required: true
        type: string
      - name: maxMessages
        description: |
            Max No. of messages to return.
        in: query
        type: integer
      - name: sessionToken
        description: Session authentication token.
        in: header
        required: true
        type: string
      - name: keyManagerToken
        description: Key Manager authentication token.
        in: header
        required: true
        type: string
      consumes:
        - application/json
      produces:
        - application/json
      tags:
        - Datafeed
      responses:
        '200':
          description: List of messages that have occurred since last time this URL was polled. If the list is empty, it means the request has reached its timeout, and the client should poll again.
          schema:
            $ref: '#/definitions/V2MessageList'
          headers:
            X-Warning:
              description: This method is deprecated
              type: string
        '204':
          description: No Messages.
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/message/import':
    post:
      deprecated: true
      summary: Import messages from other systems into Symphony.
      description: |
        Sends a message to be imported into the system.
        Allows you to override the timestamp and author of the message with your desired values.
        The requesting user must have the Content Management role.
        The user that the message is intended to have come from must also be present in the conversation.
        The intended message timestamp must be a valid time from the past. It cannot be a future timestamp.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: messageList
          in: body
          required: true
          schema:
            $ref: '#/definitions/MessageImportList'
      tags:
        - Messages
      responses:
        '200':
          description: Message sent.
          schema:
            $ref: '#/definitions/ImportResponseList'
          headers:
            X-Warning:
              description: This method is deprecated
              type: string
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v2/message/import':
    post:
      deprecated: true
      summary: Import messages from other systems into Symphony.
      description: |
        Sends a message to be imported into the system.
        Allows you to override the timestamp and author of the message with your desired values.
        The requesting user must have the Content Management role.
        The user that the message is intended to have come from must also be present in the conversation.
        The intended message timestamp must be a valid time from the past. It cannot be a future timestamp.
        Optionally the original message ID can be specified to identify the imported message for the purpose of repeat imports.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: messageList
          in: body
          required: true
          schema:
            $ref: '#/definitions/V2MessageImportList'
      tags:
        - Messages
      responses:
        '200':
          description: Message sent.
          schema:
            $ref: '#/definitions/V2ImportResponseList'
          headers:
            X-Warning:
              description: This method is deprecated
              type: string
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/stream/{sid}/attachment/create':
    post:
      deprecated: true
      summary: Upload an attachment.
      description: |
        Upload an attachment to the given stream. The stream can be a chatroom,
        an IM or a multiparty IM.

        Once uploaded, you can use this attachment on a message you send in that stream.

        If the attachment is uploaded then 200 is returned.
      consumes:
        - multipart/form-data
      produces:
        - application/json
      parameters:
        - name: sid
          description: Stream ID
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: file
          description: The attachment body.
          in: formData
          required: true
          type: file
      tags:
        - Attachments
      responses:
        '200':
          description: 'Upload successful, return the attachment ID.'
          schema:
            $ref: '#/definitions/AttachmentInfo'
          headers:
            X-Warning:
              description: This method is deprecated
              type: string
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '422':
          description: 'Unprocessable entity: The submitted data could not be processed.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v3/stream/{sid}/attachment/create':
    post:
      deprecated: true
      summary: PROVISIONAL - Upload an attachment.
      description: |
        Upload an attachment to the given stream. The stream can be a chatroom,
        an IM or a multiparty IM.

        Once uploaded, you can use this attachment on a message you send in that stream.

        If the attachment is uploaded then 200 is returned.
      consumes:
        - multipart/form-data
      produces:
        - application/json
      parameters:
        - name: sid
          description: Stream ID
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: false
          type: string
        - name: file
          description: The attachment body.
          in: formData
          required: true
          type: file
      tags:
        - Attachments
      responses:
        '200':
          description: 'Upload successful, return the attachment ID.'
          schema:
            $ref: '#/definitions/AttachmentInfo'
          headers:
            X-Warning:
              description: This method is deprecated
              type: string
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '422':
          description: 'Unprocessable entity: The submitted data could not be processed.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/stream/{sid}/message':
    get:
      deprecated: true
      summary: Get messages from an existing stream.
      description: |
          A caller can fetch all unseen messages by passing the timestamp of
          the last message seen as the since parameter and the number of messages
          with the same timestamp value already seen as the skip parameter. This
          means that every message will be seen exactly once even in the case that
          an additional message is processed with the same timestamp as the last
          message returned by the previous call, and the case where there are
          more than maxMessages with the same timestamp value.

          This method is intended for historic queries and is generally reliable
          but if guaranteed delivery of every message in real time is required
          then the equivilent firehose method should be called.
      produces:
        - application/json
      parameters:
        - name: sid
          description: |
            Stream ID
          in: path
          required: true
          type: string
        - name: since
          description: |
            Timestamp of first required message.

            This is a long integer value representing milliseconds since
            Jan 1 1970
          in: query
          required: true
          type: integer
          format: int64
        - name: offset
          description: |
            No. of messages to skip.
          in: query
          type: integer
        - name: maxMessages
          description: |
            Max No. of messages to return. If no value is provided, 50 is the default.
          in: query
          type: integer
          required: false
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
      tags:
        - Messages
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/MessageList'
          headers:
            X-Warning:
              description: This method is deprecated
              type: string
        '204':
          description: No Messages.
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v2/stream/{sid}/message':
    get:
      deprecated: true
      summary: Get messages from an existing stream.
      description: |
          A caller can fetch all unseen messages by passing the timestamp of
          the last message seen as the since parameter and the number of messages
          with the same timestamp value already seen as the skip parameter. This
          means that every message will be seen exactly once even in the case that
          an additional message is processed with the same timestamp as the last
          message returned by the previous call, and the case where there are
          more than maxMessages with the same timestamp value.

          This method is intended for historic queries and is generally reliable
          but if guaranteed delivery of every message in real time is required
          then the equivilent firehose method should be called.
      produces:
        - application/json
      parameters:
        - name: sid
          description: |
            Stream ID
          in: path
          required: true
          type: string
        - name: since
          description: |
            Timestamp of first required message.

            This is a long integer value representing milliseconds since
            Jan 1 1970
          in: query
          required: true
          type: integer
          format: int64
        - name: offset
          description: |
            No. of messages to skip.
          in: query
          type: integer
        - name: limit
          description: |
            Max No. of messages to return. If no value is provided, 50 is the default.
          in: query
          type: integer
          required: false
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
      tags:
        - Messages
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V2MessageList'
          headers:
            X-Warning:
              description: This method is deprecated
              type: string
        '204':
          description: No Messages.
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/stream/{sid}/message/create':
    post:
      deprecated: true
      summary: Post a message to one existing stream.
      description: |
        Post a new message to the given stream. The stream can be a chatroom,
        an IM or a multiparty IM.

        If the message parameter type is TEXT then the message contains plain
        text and cannot include formating, hash tags, mentions etc.

        If the message parameter type is MessageML then the message contains
        MessageML which allows for these entities.

        If the message is in MessageML and fails schema validation
        a client error results

        If the message is sent then 200 is returned.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sid
          description: Stream ID
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: message
          in: body
          required: true
          schema:
            $ref: '#/definitions/MessageSubmission'
      tags:
        - Messages
      responses:
        '200':
          description: Message sent.
          schema:
            $ref: '#/definitions/Message'
          headers:
            X-Warning:
              description: This method is deprecated
              type: string
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v2/stream/{sid}/message/create':
    post:
      deprecated: true
      summary: Post a message to one existing stream.
      description: |
        Post a new message to the given stream. The stream can be a chatroom,
        an IM or a multiparty IM.

        You may include an attachment on the message (see the V2MessageSubmission parameter).

        If the message parameter type is TEXT then the message contains plain
        text and cannot include formating, hash tags, mentions etc.

        If the message parameter type is MessageML then the message contains
        MessageML which allows for these entities.

        If the message is in MessageML and fails schema validation
        a client error results

        If the message is sent then 200 is returned.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sid
          description: Stream ID
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: message
          in: body
          required: true
          schema:
            $ref: '#/definitions/V2MessageSubmission'
      tags:
        - Messages
      responses:
        '200':
          description: Message sent.
          schema:
            $ref: '#/definitions/V2Message'
          headers:
            X-Warning:
              description: This method is deprecated
              type: string
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v3/stream/{sid}/message/create':
    post:
      deprecated: true
      summary: PROVISIONAL - Post a message to one existing stream.
      description: |
        Post a new message to the given stream. The stream can be a chatroom,
        an IM or a multiparty IM.

        You may include an attachment on the message (see the V2MessageSubmission parameter).

        If the message parameter type is TEXT then the message contains plain
        text and cannot include formating, hash tags, mentions etc.

        If the message parameter type is MessageML then the message contains
        MessageML which allows for these entities.

        If the message is in MessageML and fails schema validation
        a client error results

        If the message is sent then 200 is returned.

        Regarding authentication, you must either use the sessionToken which was created for delegated app access
        or both the sessionToken and keyManagerToken together.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sid
          description: Stream ID
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Authorization token used to make delegated calls.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: false
          type: string
        - name: message
          in: body
          required: true
          schema:
            $ref: '#/definitions/V2MessageSubmission'
      tags:
        - Messages
      responses:
        '200':
          description: Message sent.
          schema:
            $ref: '#/definitions/V2Message'
          headers:
            X-Warning:
              description: This method is deprecated
              type: string
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/stream/{sid}/share':
    post:
      deprecated: true
      summary: Share a piece of content into Symphony
      description: |
        Given a 3rd party content (eg. news article), it can share to the given stream.
        The stream can be a chatroom, an IM or a multiparty IM.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sid
          description: Stream ID
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: shareContent
          in: body
          required: true
          schema:
            $ref: '#/definitions/ShareContent'
      tags:
        - Share
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V2Message'
          headers:
            X-Warning:
              description: This method is deprecated
              type: string
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/util/obsolete':
    post:
      deprecated: true
      summary: Example of a deprecated endpoint, returns input.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: keyManagerToken
          description: Key Manager authentication token.
          in: header
          required: true
          type: string
        - name: echoInput
          description: |
            Message in plain text
          in: body
          required: true
          schema:
            $ref: '#/definitions/SimpleMessage'
      tags:
        - Util
      responses:
        '200':
          description: Message sent.
          schema:
            $ref: '#/definitions/SimpleMessage'
          headers:
            X-Warning:
              description: This method is deprecated
              type: string
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Session tokens invalid.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden: Caller lacks necessary entitlement.'
          schema:
            $ref: '#/definitions/Error'
        '420':
          description: 'Gone. Returned when the option to hard fail deprecated methods is enabled'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'

definitions:
  Error:
    type: object
    properties:
      code:
        type: integer
        format: int32
      message:
        type: string
  V2Error:
    type: object
    properties:
      code:
        type: integer
        format: int32
      message:
        type: string
      details:
        type: object
    required:
    - code
    - message
  SuccessResponse:
    type: object
    properties:
      format:
        type: string
        enum:
          - TEXT
          - XML
      message:
        type: string
  V2BaseMessage:
    type: object
    discriminator: v2messageType
    properties:
      id:
        type: string
        description: The messageId is assigned by the ingestor service when a message is sent.
      timestamp:
        type: string
      v2messageType:
        type: string
      streamId:
        type: string
    required:
    - v2messageType
    - timestamp
    - streamId
  V2Message:
    type: object
    description: A representation of a message sent by a user of Symphony.
    allOf:
    - $ref: '#/definitions/V2BaseMessage'
    - type: object
      properties:
        message:
          type: string
          format: MessageML
          description: Message text in MessageML
        fromUserId:
          type: integer
          format: int64
          description: the Symphony userId of the user who sent the message. This will be populated by the server (and actually ignored if included when sending a message).
        attachments:
          type: array
          items:
            $ref: '#/definitions/AttachmentInfo'
      required:
      - message
      - fromUserId
  RoomCreatedMessage:
    type: object
    description: Generated when a room is created.
    allOf:
    - $ref: '#/definitions/V2BaseMessage'
    - type: object
      properties:
        creationDate:
          type: integer
          format: int64
        name:
          type: string
        keywords:
          type: array
          items:
            $ref: '#/definitions/RoomTag'
        description:
          type: string
        createdByUserId:
          type: integer
          format: int64
          description: The Symphony userId of the user who created the room.
        readOnly:
          type: boolean
        discoverable:
          type: boolean
        public:
          type: boolean
        membersCanInvite:
          type: boolean
        copyProtected:
          type: boolean
  RoomDeactivatedMessage:
    type: object
    description: Generated when a room is deactivated.
    allOf:
    - $ref: '#/definitions/V2BaseMessage'
    - type: object
      properties:
        deactivatedByUserId:
          type: integer
          format: int64
  RoomReactivatedMessage:
    type: object
    description: Generated when a room is reactivated.
    allOf:
    - $ref: '#/definitions/V2BaseMessage'
    - type: object
      properties:
        reactivatedByUserId:
          type: integer
          format: int64
  RoomUpdatedMessage:
    type: object
    description: Generated when a room is updated.
    allOf:
    - $ref: '#/definitions/V2BaseMessage'
    - type: object
      properties:
        oldName:
          type: string
        newName:
          type: string
        keywords:
          type: array
          items:
            $ref: '#/definitions/RoomTag'
        oldDescription:
          type: string
        newDescription:
          type: string
        membersCanInvite:
          type: boolean
        discoverable:
          type: boolean
        readOnly:
          type: boolean
        copyProtected:
          type: boolean
  UserJoinedRoomMessage:
    type: object
    description: Generated when a user joins a room.
    allOf:
    - $ref: '#/definitions/V2BaseMessage'
    - type: object
      properties:
        addedByUserId:
          type: integer
          format: int64
        memberAddedUserId:
          type: integer
          format: int64
  UserLeftRoomMessage:
    type: object
    description: Generated when a user leaves a room.
    allOf:
    - $ref: '#/definitions/V2BaseMessage'
    - type: object
      properties:
        removedByUserId:
          type: integer
          format: int64
        memberLeftUserId:
          type: integer
          format: int64
        informationBarrierRemediation:
          type: boolean
  RoomMemberPromotedToOwnerMessage:
    type: object
    description: Generated when a room member is promoted to owner.
    allOf:
    - $ref: '#/definitions/V2BaseMessage'
    - type: object
      properties:
        promotedByUserId:
          type: integer
          format: int64
        promotedUserId:
          type: integer
          format: int64
  RoomMemberDemotedFromOwnerMessage:
    type: object
    description: Generated when a room member is promoted to owner.
    allOf:
    - $ref: '#/definitions/V2BaseMessage'
    - type: object
      properties:
        demotedByUserId:
          type: integer
          format: int64
        demotedUserId:
          type: integer
          format: int64
  ConnectionRequestMessage:
    type: object
    description: Generated when a connection request is sent.
    allOf:
    - $ref: '#/definitions/V2BaseMessage'
    - type: object
      properties:
        requestingUserId:
          type: integer
          format: int64
        targetUserId:
          type: integer
          format: int64
        firstRequestedAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
        requestCounter:
          type: integer
        status:
          type: string
  AttachmentInfo:
    type: object
    properties:
      id:
        type: string
        description: The attachment ID.
      name:
        type: string
        description: The file name.
      size:
        type: integer
        format: int64
        description: Size in bytes.
    required:
    - id
    - name
    - size
  V2MessageList:
    type: array
    items:
      $ref: '#/definitions/V2BaseMessage'
  SimpleMessage:
    description: A string wrapped in a JSON object.
    type: object
    properties:
      message:
        type: string
  Datafeed:
    type: object
    properties:
      id:
        type: string
  RoomTag:
    description: Room Tag object. A key:value pair describing additional properties of the room.
    properties:
      key:
        description: A unique label of the Tag.
        type: string
      value:
        description: The value of this Tag's label.
        type: string
    required:
    - key
    - value
  ShareArticle:
    type: object
    properties:
      articleId:
        type: string
        description: An ID for this article that should be unique to the calling application. Either an articleId or an articleUrl is required.
      title:
        type: string
        description: The title of the article
      subTitle:
        type: string
        description: The subtitle of the article
      message:
        type: string
        description: The message text that can be send along with the shared article
      publisher:
        type: string
        description: Publisher of the article
      publishDate:
        type: integer
        format: int64
        description: Article publish date in unix timestamp
      thumbnailUrl:
        type: string
        description: Url to the thumbnail image
      author:
        type: string
        description: Author of the article
      articleUrl:
        type: string
        description: Url to the article
      summary:
        type: string
        description: Preview summary of the article
      appId:
        type: string
        description: App ID of the calling application
      appName:
        type: string
        description: App name of the calling application
      appIconUrl:
        type: string
        description: App icon url of the calling application
    required:
    - title
    - publisher
    - author
    - appId
  ShareContent:
    type: object
    properties:
      type:
        type: string
        description: Type of content to be shared.  Currently only support "com.symphony.sharing.article"
      content:
        $ref: '#/definitions/ShareArticle'
  V2HealthCheckResponse:
     type: object
     properties:
       podConnectivity:
         type: boolean
         description: Indicates whether the Agent server can connect to the Pod
       podConnectivityError:
         type: string
         description: Error details in case of no Pod connectivity
       keyManagerConnectivity:
         type: boolean
         description: Indicates whether the Agent server can connect to the Key Manager
       keyManagerConnectivityError:
         type: string
         description: Error details in case of no Key Manager connectivity
       firehoseConnectivity:
         type: boolean
         description: Indicates whether the Agent server can connect to Firehose Service
       firehoseConnectivityError:
         type: string
         description: Error details in case of no Firehose connectivity
       encryptDecryptSuccess:
         type: boolean
         description: Indicates whether the Agent can successfully decrypt and encrypt messages
       encryptDecryptError:
         type: string
         description: Error details in case of the encryption or decryption of the message fails
       podVersion:
         type: string
         description: The version number of the pod
       agentVersion:
         type: string
         description: The version number of the Agent server
       agentServiceUser:
         type: boolean
         description: Indicates whether agent service user is setup correctly.
       agentServiceUserError:
         type: string
         description: Error details in case agent service user is setup incorrectly.
       ceServiceUser:
         type: boolean
         description: Indicates whether CEService user is setup correctly.
       ceServiceUserError:
         type: string
         description: Error details in case CEService user is setup incorrectly.
  MessageSearchQuery:
    type: object
    properties:
      text:
        type: string
        description: Search for messages containing this text. Requires streamId to be specified.
      streamId:
        type: string
        description: Search for messages sent to this stream
      streamType:
        type: string
        description: |
          Search for messages sent to this type of streams. Accepted values are CHAT, IM, MIM, ROOM, POST.
      author:
        type: integer
        format: int64
        description: Search for messages sent by this user ID
      hashtag:
        type: string
        description: Search for messages containing this hashtag
      cashtag:
        type: string
        description: Search for messages containing this cashtag
      mention:
        type: integer
        format: int64
        description: Search for messages mentioning this user ID
      signal:
        type: string
        description: |
          Search for messages matching this signal. Can only be combined with date filtering and paging parameters.
      fromDate:
        type: integer
        format: int64
        description: Search for messages sent on or after this timestamp
      toDate:
        type: integer
        format: int64
        description: Search for messages sent before this timestamp
  V4MessageImportList:
    description: |
      An ordered list of historic messages to be imported.
      A list of import responsees will be returned in the same order.
    type: array
    items:
      $ref: '#/definitions/V4ImportedMessage'
  V4ImportedMessage:
    description: |
      A historic message to be imported into the system.
      The importing user must have the Content Management role.
      Also, the importing user must be a member of the conversation it is importing into.
      The user that the message is intended to have come from must also be present in the conversation.
      The intended message timestamp must be a valid time from the past. It cannot be a future timestamp.
      By design, imported messages do not stream to datafeed or firehose endpoints.
    type: object
    properties:
      message:
        type: string
        format: MessageML
        description: Message text in MessageMLV2
      data:
        type: string
        format: JSON
        description: Entity data in EntityJSON
      intendedMessageTimestamp:
        description: |
          The timestamp representing the time when the message was sent in the original system
          in milliseconds since Jan 1st 1970.
        type: integer
        format: int64
      intendedMessageFromUserId:
        description: |
          The long integer userid of the Symphony user who you intend to show sent the message.
        type: integer
        format: int64
      originatingSystemId:
        description: |
          The ID of the system through which the message was originally sent.
        type: string
      originalMessageId:
        description: |
          The ID of the message in the original system.
        type: string
      streamId:
        type: string
    required:
    - message
    - intendedMessageTimestamp
    - intendedMessageFromUserId
    - originatingSystemId
    - streamId
  V4ImportResponseList:
    type: array
    items:
      $ref: '#/definitions/V4ImportResponse'
  V4ImportResponse:
    type: object
    properties:
      messageId:
        description: |
          If the message was successfully imported then the message ID in the system
          of the newly created message.
        type: string
      originatingSystemId:
        description: |
          The ID of the system through which the message was originally sent.
        type: string
      originalMessageId:
        description: |
          The ID of the message in the original system.
        type: string
      diagnostic:
        description: |
          A diagnostic message containing an error message in the event that the
          message import failed. May also be present in the case of a successful
          call if there is useful narrative to return.
        type: string
  V4AttachmentInfo:
    type: object
    properties:
      id:
        type: string
        description: The attachment ID.
      name:
        type: string
        description: The file name.
      size:
        type: integer
        format: int64
        description: Size in bytes.
      images:
        type: array
        items:
          $ref: '#/definitions/V4ThumbnailInfo'
    required:
    - id
    - name
    - size
  V4ThumbnailInfo:
    type: object
    properties:
      id:
        type: string
        description: The thumbnail ID.
      dimension:
        type: string
        description: The thumbnail pixel size.
  V4MessageList:
    type: array
    items:
      $ref: '#/definitions/V4Message'
  V4Message:
    type: object
    description: A representation of a message sent by a user of Symphony
    properties:
      messageId:
        type: string
        description: Id of the message
      timestamp:
        type: integer
        format: int64
        description: Timestamp of the message in milliseconds since Jan 1 1970
      message:
        type: string
        format: MessageMLV2
        description: Message content in MessageMLV2
      sharedMessage:
        description: Only present when the message represented by this class is a wall post sharing another message.
        $ref: '#/definitions/V4Message'
      data:
        type: string
        format: JSON
        description: Message data in EntityJSON
      attachments:
        description: Message attachments
        type: array
        items:
          $ref: '#/definitions/V4AttachmentInfo'
      user:
        $ref: '#/definitions/V4User'
      stream:
        $ref: '#/definitions/V4Stream'
      externalRecipients:
        description: Indicates if the message have external recipients. Only present on real time messaging.
        type: boolean
      diagnostic:
        type: string
        description: |
          Details if event failed to parse for any reason.  The contents of this field may not be useful,
          depending on the nature of the error. Only present when error occurs.
      userAgent:
        type: string
        description: |
          User agent string for client that sent the message.  Allows callers to identify which client sent the
          origin message (e.g. API Agent, SFE Client, mobile, etc)
      originalFormat:
        type: string
        description: |
          Indicates the format in which the message was originally sent.  This could have been either:
          - com.symphony.markdown - Markdown OR Message ML V1
          - com.symphony.messageml.v2 - Message ML V2
      disclaimer:
        type: string
        description: |
          Message that may be sent along with a regular message if configured for the POD,
          usually the first message sent in a room that day.
  V4User:
    type: object
    properties:
      userId:
        type: integer
        format: int64
        description: Id of user
      firstName:
        type: string
        description: First name of user
      lastName:
        type: string
        description: Last name of user
      displayName:
        type: string
        description: User display name
      email:
        type: string
        description: Email of user
      username:
        type: string
        description: Applicable only to internal users
  V4Stream:
    type: object
    properties:
      streamId:
        type: string
        description: Id of stream
      streamType:
        type: string
        description: |
          Stream type, possible values are:
            - IM
            - MIM
            - ROOM
            - POST
      roomName:
        type: string
        description: Applicable only to rooms
      members:
        description: Applicable only to IM Created
        type: array
        items:
          $ref: '#/definitions/V4User'
      external:
        type: boolean
      crossPod:
        type: boolean
  V4RoomProperties:
    type: object
    properties:
      name:
        type: string
      description:
        type: string
      creatorUser:
        $ref: '#/definitions/V4User'
      createdDate:
        type: integer
        format: int64
        description: Timestamp
      external:
        type: boolean
      crossPod:
        type: boolean
      public:
        type: boolean
      copyProtected:
        type: boolean
      readOnly:
        type: boolean
      discoverable:
        type: boolean
      membersCanInvite:
        type: boolean
      keywords:
        type: array
        items:
          $ref: '#/definitions/V4KeyValuePair'
      canViewHistory:
        type: boolean
  V4KeyValuePair:
    type: object
    properties:
      key:
        type: string
      value:
        type: string
  V4MessageSent:
    type: object
    properties:
      message:
        $ref: '#/definitions/V4Message'
  V4Initiator:
    type: object
    properties:
      user:
        $ref: '#/definitions/V4User'
  V4SharedPost:
    type: object
    properties:
      message:
        $ref: '#/definitions/V4Message'
      sharedMessage:
        $ref: '#/definitions/V4Message'
  V4InstantMessageCreated:
    type: object
    properties:
      stream:
        $ref: '#/definitions/V4Stream'
  V4RoomCreated:
    type: object
    properties:
      stream:
        $ref: '#/definitions/V4Stream'
      roomProperties:
        $ref: '#/definitions/V4RoomProperties'
  V4RoomUpdated:
    type: object
    properties:
      stream:
        $ref: '#/definitions/V4Stream'
      newRoomProperties:
        $ref: '#/definitions/V4RoomProperties'
  V4RoomDeactivated:
    type: object
    properties:
      stream:
        $ref: '#/definitions/V4Stream'
  V4RoomReactivated:
    type: object
    properties:
      stream:
        $ref: '#/definitions/V4Stream'
  V4UserJoinedRoom:
    type: object
    properties:
      stream:
        $ref: '#/definitions/V4Stream'
      affectedUser:
        # User who was affected by the action (i.e. added to the room)
        $ref: '#/definitions/V4User'
  V4UserLeftRoom:
    type: object
    properties:
      stream:
        $ref: '#/definitions/V4Stream'
      affectedUser:
        # User who was affected by the action (i.e. left the room)
        $ref: '#/definitions/V4User'
  V4RoomMemberPromotedToOwner:
    type: object
    properties:
      stream:
        $ref: '#/definitions/V4Stream'
      affectedUser:
        # User who was affected by the action (i.e. promoted to owner)
        $ref: '#/definitions/V4User'
  V4RoomMemberDemotedFromOwner:
    type: object
    properties:
      stream:
        $ref: '#/definitions/V4Stream'
      affectedUser:
        # User who was affected by the action (i.e. demoted from owner)
        $ref: '#/definitions/V4User'
  V4ConnectionRequested:
    type: object
    properties:
      toUser:
        # User who received the connection request
        $ref: '#/definitions/V4User'
  V4ConnectionAccepted:
    type: object
    properties:
      fromUser:
        # User who sent the connection request
        $ref: '#/definitions/V4User'
  V4MessageSuppressed:
    type: object
    properties:
      messageId:
        type: string
      stream:
        # the stream holding the suppressed message
        $ref: '#/definitions/V4Stream'
  V4SymphonyElementsAction:
    type: object
    properties:
      actionStream:
        description: "The stream where the Form answers will be posted"
        $ref: '#/definitions/V4Stream'
      formStream:
        description: "The stream where the Form message was posted"
        $ref: '#/definitions/V4Stream'
      formMessageId:
        description: "The id of the message that contains the Form"
        type: string
      formId:
        description: "The id of the Form element"
        type: string
      formValues:
        description: "The values (in JSON format) answered on the Form"
        type: object
  V4Payload:
    type: object
    properties:
      messageSent:
        $ref: '#/definitions/V4MessageSent'
      sharedPost:
        $ref: '#/definitions/V4SharedPost'
      instantMessageCreated:
        $ref: '#/definitions/V4InstantMessageCreated'
      roomCreated:
        $ref: '#/definitions/V4RoomCreated'
      roomUpdated:
        $ref: '#/definitions/V4RoomUpdated'
      roomDeactivated:
        $ref: '#/definitions/V4RoomDeactivated'
      roomReactivated:
        $ref: '#/definitions/V4RoomReactivated'
      userJoinedRoom:
        $ref: '#/definitions/V4UserJoinedRoom'
      userLeftRoom:
        $ref: '#/definitions/V4UserLeftRoom'
      roomMemberPromotedToOwner:
        $ref: '#/definitions/V4RoomMemberPromotedToOwner'
      roomMemberDemotedFromOwner:
        $ref: '#/definitions/V4RoomMemberDemotedFromOwner'
      connectionRequested:
        $ref: '#/definitions/V4ConnectionRequested'
      connectionAccepted:
        $ref: '#/definitions/V4ConnectionAccepted'
      messageSuppressed:
        $ref: '#/definitions/V4MessageSuppressed'
      symphonyElementsAction:
        $ref: '#/definitions/V4SymphonyElementsAction'
  V4Event:
    type: object
    properties:
      id:
        type: string
        description: Event ID
      messageId:
        type: string
        description: Message ID
      timestamp:
        type: integer
        format: int64
        description: Timestamp of event
      type:
        type: string
        description: |
          Event type, possible events are:
            - MESSAGESENT
            - SHAREDPOST
            - INSTANTMESSAGECREATED
            - ROOMCREATED
            - ROOMUPDATED
            - ROOMDEACTIVATED
            - ROOMREACTIVATED
            - USERJOINEDROOM
            - USERLEFTROOM
            - ROOMMEMBERPROMOTEDTOOWNER
            - ROOMMEMBERDEMOTEDFROMOWNER
            - CONNECTIONREQUESTED
            - CONNECTIONACCEPTED
            - MESSAGESUPPRESSED
            - SYMPHONYELEMENTSACTION
      diagnostic:
        type: string
        description: |
          Details if event failed to parse for any reason.  The contents of this field may not be useful,
          depending on the nature of the error. Only present when error occurs.
      initiator:
        # Actor who initiated the event
        $ref: '#/definitions/V4Initiator'
      payload:
        # Holds payload for all event types
        $ref: '#/definitions/V4Payload'
  V4EventList:
    type: array
    items:
      $ref: '#/definitions/V4Event'
  BaseSignal:
    type: object
    properties:
      name:
        type: string
        description: Signal name
      query:
        type: string
        description: |
          The query used to define this signal. The query is defined as "field:value" pairs combined by the operators
          "AND" or "OR". Supported fields are (case-insensitive): "author", "hashtag" and "cashtag".
          MUST contain at least one "hashtag" or "cashtag" definition.
      visibleOnProfile:
        type: boolean
        description: Whether the signal is visible on its creator's profile
      companyWide:
        type: boolean
        description: Whether the signal is a push signal
  Signal:
    allOf:
      - $ref: '#/definitions/BaseSignal'
      - type: object
        properties:
          id:
            type: string
            description: Signal ID
          timestamp:
            type: integer
            format: int64
            description: Timestamp when the signal was created, in milliseconds since Jan 1 1970
  SignalList:
    type: array
    items:
      $ref: '#/definitions/Signal'
  ChannelSubscriptionResponse:
    type: object
    properties:
      requestedSubscription:
        type: integer
        format: int64
        description: The number of requested userIds to subscribe
      successfulSubscription:
        type: integer
        format: int64
        description: The number of successful subscriptions done
      failedSubscription:
        type: integer
        format: int64
        description: The number of subscription failures
      subscriptionErrors:
        type: array
        items:
          $ref: '#/definitions/ChannelSubscriptionError'
  ChannelSubscriptionError:
    type: object
    properties:
      userId:
        type: integer
        format: int64
        description: The userId on which failure happened
      code:
        type: string
        description: subscription failure code
      message:
        type: string
        description: subscription failure message
  ChannelSubscriberResponse:
    type: object
    properties:
      offset:
        type: integer
        format: int64
        description: The number of subscribers skipped
      hasMore:
        type: boolean
        description: True if there are more subscribers
      total:
        type: integer
        description: The total number of subscribers
      data:
        type: array
        items:
          $ref: '#/definitions/ChannelSubscriber'
  ChannelSubscriber:
    type: object
    properties:
      pushed:
        type: boolean
        description: True if the subscriber is allowed to unsubscribe
      owner:
        type: boolean
        description: True if the subscriber is the creator
      subscriberName:
        type: string
        description: User display name
      userId:
        type: integer
        format: int64
        description: The user ID of the subscriber
      timestamp:
        type: integer
        format: int64
        description: Timestamp when the signal was subscribed, in milliseconds since Jan 1 1970
  AgentInfo:
    type: object
    properties:
      ipAddress:
        type: string
        description: The IP address of the Agent server.
      hostname:
        type: string
        description: The hostname of the Agent server.
      serverFqdn:
        type: string
        description: The fully-qualified domain name of the Agent server. Must be set by the user at startup.
      version:
        type: string
        description: The version of the Agent.
      url:
        type: string
        description: The URL under which the Agent is available.
      onPrem:
        type: boolean
        description: Whether this is an on-prem or cloud installation.
      commitId:
        type: string
        description: The Git commit ID of the running revision.
  V1DLPPoliciesCollectionResponse:
    type: object
    properties:
      policies:
        type: array
        description: List of policies
        items:
          $ref: '#/definitions/V1DLPPolicy'
      page:
        type: integer
        format: int32
        description: Page number of current page
      pageCount:
        type: integer
        format: int32
        description: Total number of pages available
    description: List of policies
  V1DLPPolicy:
    type: object
    required:
    - "contentTypes"
    - "name"
    - "scopes"
    - "type"
    properties:
      active:
        type: boolean
        description: Indicate whether the policy is active or not
      contentTypes:
        type: array
        description: |
          The list of content types that policy should apply to. Cannot be empty. Policy content types could be either of "Messages", "RoomMeta", "SignalMeta".
          Default is set to ["Messages"] if not specified.
        items:
          type: string
      creationDate:
        type: integer
        format: int64
        description: |
          Creation time of the policy in milliseconds elapsed as of epoch time.
      creatorId:
        type: string
        description: Numeric userId of the creator
      dictionaryRefs:
        type: array
        description: List of dictionaries.
        items:
          $ref: '#/definitions/V1DLPDictionaryRef'
      lastDisabledDate:
        type: integer
        format: int64
        description: |
          Recent disable time of the policy in milliseconds elapsed as of epoch time.
      lastUpdatedDate:
        type: integer
        format: int64
        description: Recent update time of the policy in milliseconds elapsed as of epoch time.
      name:
        type: string
        description: Unique name of a policy, max 30 characters. Cannot be empty. All the leading and trailing blank spaces are trimmed.
      policyId:
        type: string
        description: Policy Id
      scopes:
        type: array
        description: |
          List of communication scopes. Possible values are "Internal" (for Internal conversations) or "External" (for External conversations).
          You can apply both scopes if you set it to ["Internal", "External"].
        items:
          type: string
      type:
        type: string
        description: Type of policy. Possible values "Block" or "Warn".
      version:
        type: string
        description: |
          The version of a dictionary, in format "major.minor". Initial value will set by backend as "1.0" when created.
          Whenever the dictionary version needs to be changed, the minor version by 1 unless minor == 999, then the major version is increased by 1 until it reaches 999.
    description: The policy object for expression filter, one policy can have multiple dictionaries
  V1DLPPolicyRequest:
    type: object
    required:
    - "contentTypes"
    - "name"
    - "scopes"
    - "type"
    properties:
      contentTypes:
        type: array
        description: |
          The list of content types that policy should apply to. Cannot be empty. Policy content types could be either of "Messages", "RoomMeta", "SignalMeta".
          Default is set to ["Messages"] if not specified.
        items:
          type: string
      dictionaryIds:
        type: array
        description: List of dictionaries Ids for the policy.
        items:
          type: string
      name:
        type: string
        description: Unique name of a policy, max 30 characters. Cannot be empty. All the leading and trailing blank spaces are trimmed.
      scopes:
        type: array
        description: |
          List of communication scopes. Possible values are "Internal" (for Internal conversations) or "External" (for External conversations).
          You can apply both scopes if you set it to ["Internal", "External"].
        items:
          type: string
      type:
        type: string
        description: Type of policy. Possible values "Block" or "Warn".
    description: The policy object to use for creating/updating a policy.
  V1DLPPolicyResponse:
    type: object
    properties:
      data:
        $ref: '#/definitions/V1DLPPolicy'
    description: Policy Response
  V1DLPDictionary:
    type: object
    required:
    - dictionaryMetadata
    properties:
      content:
        $ref: '#/definitions/V1DLPDictionaryContent'
      dictionaryMetadata:
        $ref: '#/definitions/V1DLPDictionaryMetadata'
    description: Dictionary object
  V1DLPDictionaryContent:
    type: object
    properties:
      data:
        type: string
        description: |
          A comma separated string which contains a lot of keywords/regexes.
      numKeywords:
        type: integer
        format: int32
        description: Number of Keywords in dictionary
      md5:
        type: string
        description: MD5 value of the content
    description: Content of a dictionary
  V1DLPDictionaryMetadataCollectionResponse:
    type: object
    properties:
      items:
        type: array
        description: List of dictionary metadata
        items:
          $ref: '#/definitions/V1DLPDictionaryMetadata'
      page:
        type: integer
        format: int32
        description: Page number of current page
      pageCount:
        type: integer
        format: int32
        description: Total number of pages available
    description: List of dictionary metadata.
  V1DLPDictionaryMetadataResponse:
    type: object
    required:
    - data
    properties:
      data:
        $ref: '#/definitions/V1DLPDictionaryMetadata'
    description: Dictionary response containing dictionary metadata.
  V1DLPDictionaryMetadataCreateRequest:
    type: object
    required:
    - name
    - type
    properties:
      name:
        type: string
        description: |
          The name of dictionary
      type:
        type: string
        description: |
          The type of dictionary, which specify the content is a list of words or a list of regexes.
          By default set to "Word" if not specified. Possible values - Word, Regex
    description: Dictionary's metadata (excluding content) to use for dictionary create operations.
  V1DLPDictionaryMetadataUpdateRequest:
    type: object
    required:
    - name
    properties:
      name:
        type: string
        description: |
          The name of dictionary
    description: Dictionary's metadata (excluding content) to use for dictionary update operations.
  V1DLPDictionaryMetadata:
    type: object
    required:
    - dictRef
    - type
    properties:
      creationDate:
        type: integer
        format: int64
        description: Creation time of the dictionary in milliseconds elapsed as of epoch time.
      creatorId:
        type: string
        description: Numeric userId of the creator
      dictRef:
        $ref: '#/definitions/V1DLPDictionaryRef'
      lastUpdatedDate:
        type: integer
        format: int64
        description: The recent update time of the dictionary in milliseconds
      type:
        type: string
        description: |
          The type of dictionary, which specify the content is a list of words or a list of regexes.
          By default set to "Word" if not specified. Possible values - Word, Regex
    description: Dictionary's metadata (excluding content)
  V1DLPDictionaryRef:
    type: object
    required:
    - name
    properties:
      dictId:
        type: string
        description: Unique dictionary id
      name:
        type: string
        description: Unique name of a dictionary, max 30 characters, with trimmed leading and trailing blank spaces.
      version:
        type: string
        description: |
          The version of a dictionary, in format "major.minor".
          Initial value will set by backend as "1.0" when created.
          Whenever the dictionary version needs to be changed, the minor version by 1 unless minor == 999, then the major version is increased by 1 until it reaches 999.
    description: Basic information needed to identify a dictionary
  V1DLPViolationMessageResponse:
    type: object
    properties:
      violations:
        type: array
        description: A representation of list of violations due to messages sent by a user of Symphony
        items:
          $ref: '#/definitions/V1DLPViolationMessage'
      nextOffset:
        type: string
        description: Offset for the next chunk of violations to be submitted in the next request.  Value is null if there are no further violations.
  V1DLPViolationStreamResponse:
    type: object
    properties:
      violations:
        type: array
        items:
          # A representation of list of violations due to rooms creation/update sent by a user of Symphony
          $ref: '#/definitions/V1DLPViolationStream'
      nextOffset:
        type: string
        description: Offset for the next chunk of violations to be submitted in the next request.  Value is null if there are no further violations.
  V1DLPViolationSignalResponse:
    type: object
    properties:
      violations:
        type: array
        description: A representation of list of violations due to signal creation/update sent by a user of Symphony
        items:
          $ref: '#/definitions/V1DLPViolationSignal'
      nextOffset:
        type: string
        description: Offset for the next chunk of violations to be submitted in the next request.  Value is null if there are no further violations.
  V1DLPViolationMessage:
    type: object
    properties:
      violation:
        # A representation of a violation due to a message sent by a user of Symphony
        $ref: '#/definitions/V1DLPViolation'
      message:
        # Message details when DLP was enforced
        $ref: '#/definitions/V4Message'
      diagnostic:
        type: string
        description: |
            A diagnostic message containing an error message in the event there are parsing errors.
            May also be present in the case of a successful call if there is useful narrative to return.
  V1DLPViolationStream:
    type: object
    properties:
      violation:
        # A representation of a violation due to rooms creation/update sent by a user of Symphony
        $ref: '#/definitions/V1DLPViolation'
      stream:
        # Room details when DLP was enforced
        $ref: '#/definitions/V1DLPStream'
  V1DLPViolationSignal:
    type: object
    properties:
      violation:
        # A representation of a violation due to signal creation/update sent by a user of Symphony
        $ref: '#/definitions/V1DLPViolation'
      signal:
        # Signal details when DLP was enforced
        $ref: '#/definitions/V1DLPSignal'
  V1DLPViolation:
    type: object
    description: A representation of a violation due to a message sent by a user of Symphony
    properties:
      enforcementEventID:
        type: string
        description: Enforcement event ID. Unique ID that identifies this enforcement.
      entityID:
        type: string
        description: Entity ID is the content Id of the violation, for example, for messages, its the Id of the message
      createTime:
        type: integer
        format: int64
        description: Timestamp of the violation in milliseconds since Jan 1 1970
      lastModified:
        type: integer
        format: int64
        description: Timestamp of the last modification of violation in milliseconds since Jan 1 1970
      requesterId:
        type: integer
        format: int64
        description: Id of the requester responsible for the message/stream/signal
      matchedPolicies:
        # Policies that matched when DLP was enforced and the list of matched terms decrypted.
        $ref: '#/definitions/V1DLPMatchedPolicyList'
      action:
        type: string
        description: action taken such as BLOCK or WARN.  See outcome for a more detailed description of the outcome this action.
      outcome:
        # Detailed outcome of the DLP enforcement such as REJECTED_VIOLATION, ACCEPTED_WARNING, ACCEPTED_LEGACY_CLIENT etc.
        $ref: '#/definitions/V1DLPOutcome'
      version:
        type: string
        description: Version of application which processed the message and produced this violation.
      ignoreDLPwarning:
          type: boolean
          description: Did the user chose to ignore DLP warning that was presented?
  V1DLPMatchedPolicyList:
    type: array
    items:
      $ref: '#/definitions/V1DLPMatchedPolicy'
    description: List of policies that matched the violation.
  V1DLPMatchedPolicy:
    type: object
    description: A representation of policy that matched the violation with a list of matched keywords in the policy
    properties:
      id:
        type: string
        description: Id of the policy
      version:
        type: string
        description: Version of the policy
      policyName:
        type: string
        description: Name of the policy
      type:
        type: string
        description: Whether BLOCK or WARN
      terms:
        type: string
        description: List of decrypted matched keywords in the policy
      diagnostic:
        type: string
        description: |
            A diagnostic message containing an error message in the event that the
            decryption of terms failed. May also be present in the case of a successful
            call if there is useful narrative to return.
  V1DLPOutcome:
    type: object
    description: A representation of outcome of DLP message/stream/signal sent by a user of Symphony
    properties:
      type:
        type: string
        description: Outcome of DLP enforcement
  V1DLPContentType:
    type: object
    description: A representation of content type of message sent by a user of Symphony (message/stream/signal)
    properties:
      type:
        type: string
        description: content type
  V1DLPStream:
    type: object
    description: Room details in the context of violation.
    properties:
        name:
          type: string
          description:  Name of the Stream/Room.
        creatorPrettyName:
          type: string
          description:  Name of the creator of the Room.
        publicRoom:
          type: boolean
          description:  Is this a public room?
        crossPod:
          type: boolean
          description:  Is this a cross pod scenario?
        allowExternal:
          type: boolean
          description:  Is external messaging allowed
        creatorId:
          type: string
          description:  Id of the creator of the Room.
        roomDescription:
          type: string
          description:  Description of the Room.
        streamId:
          type: string
          description:  ThreadId of the Room.
        state:
          type: string
          description:  State of the Room (example CREATED etc)
        type:
          type: string
          description:  Type of the Room (example ROOM (or IM or Wall))
        lastDisabled:
          type: integer
          format: int64
          description: Timestamp of last time the room is Disabled
        memberAddUserEnabled:
          type: boolean
          description:  Is memberAddUserEnabled
        active:
          type: boolean
          description:  Is Room Active
        discoverable:
          type: boolean
          description:  Is Room discoverable
        readOnly:
          type: boolean
          description:  Is Room read-only
        copyDisabled:
          type: boolean
          description:  Is Room copyDisabled
        externalOwned:
          type: boolean
          description:  Is Room externalOwned
        sendMessageDisabled:
          type: boolean
          description:  Is sendMessage Disabled for this Room
        moderated:
          type: boolean
          description:  Is room moderated
        shareHistoryEnabled:
          type: boolean
          description:  Is room shareHistoryEnabled
        diagnostic:
          type: string
          description: |
              A diagnostic message containing an error message in the event that the
              stream retrieval failed. May also be present in the case of a successful
              call if there is useful narrative to return.
  V1DLPSignal:
    type: object
    description: Signal details
    properties:
        name:
          type: string
          description:  Name of the Signal
        rules:
          type: string
          description:  Signal rules decrypted.
        diagnostic:
          type: string
          description: |
              A diagnostic message containing an error message in the event that the
              signal decryption failed. May also be present in the case of a successful
              call if there is useful narrative to return.

#
# V3 Policies definitions
#
  V3DLPPolicyRequest:
    type: object
    required:
      - "name"
      - "scopes"
      - "appliesTo"
    properties:
      name:
        type: string
        description: |
          Unique name of a policy, max 30 characters. Cannot be empty. All the leading and trailing blank spaces are trimmed.
      scopes:
        type: array
        description: |
          List of communication scopes. Possible values are "Internal" (for Internal conversations) or "External" (for External conversations).
          You can apply both scopes if you set it to ["Internal", "External"].
        items:
          type: string
      appliesTo:
        type: array
        items:
          $ref: '#/definitions/V3DLPPolicyAppliesTo'
    description: Request to be used to get policies.
  V3DLPPolicy:
    type: object
    properties:
      id:
        type: string
        description: Unique identifier for policy.
      policyId:
        type: string
        description: Policy Id.
      version:
        type: string
        description: |
          The version of the policy, in format "major.minor". Initial value will set by backend as "3.0" when created.
          Whenever the policy version needs to be changed, the minor version by 1 unless minor == 999,
          then the major version is increased by 1 until it reaches 999.
      name:
        type: string
        description: |
          Unique name of policy, max 30 characters. Cannot be empty. All the leading and trailing blank spaces are trimmed.
      creatorId:
        type: integer
        format: int64
        description: Numeric userId of the creator.
      scopes:
        type: array
        description: |
          List of communication scopes. Possible values are "Internal" (for Internal conversations) or "External" (for External conversations).
          You can apply both scopes if you set it to ["Internal", "External"].
        items:
          type: string
      appliesTo:
        type: array
        items:
          $ref: '#/definitions/V3DLPPolicyAppliesTo'
      active:
        type: boolean
        description: Indicate whether the policy is active or not.
      deleted:
        type: boolean
        description: Indicate whether the policy is deleted or not.
      creationDate:
        type: integer
        format: int64
        description: |
          Creation time of the policy in milliseconds elapsed as of epoch time.
      lastUpdatedDate:
        type: integer
        format: int64
        description: |
          Recent update time of the policy in milliseconds elapsed as of epoch.
          time.
      lastDisabledDate:
        type: integer
        format: int64
        description: |
          Recent disable time of the policy in milliseconds elapsed as of epoch.
          time.
      systemPolicy:
        type: boolean
    description : |
      A policy is the main entity of V3 policy/rule system. It is responsible to define rules and add scope constraints to the engine.
  V3DLPRule:
    type: object
    required:
     - "type"
     - "name"
    properties:
      type:
        type: string
        description: Type of a rule used by policy. Can be ["UNKNOWN", "TEXT_MATCH", "FILE_EXTENSION", "FILE_SIZE", "FILE_PASSWORD", "FILE_CLASSIFIER"].
      name:
        type: string
        description: Name for rule.
      textMatchConfig:
        $ref: '#/definitions/V3DLPTextMatchConfig'
      fileSizeConfig:
        $ref: '#/definitions/V3DLPFileSizeConfig'
      fileExtensionConfig:
        $ref: '#/definitions/V3DLPFileExtensionConfig'
      filePasswordConfig:
        $ref: '#/definitions/V3DLPFilePasswordConfig'
      fileClassifierConfig:
        $ref: '#/definitions/V3DLPFileClassifierConfig'
    description: |
     A Rule defines the actual matching specification for policies. It holds a type and a configuration
     for the rule, these properties should be used to build the corresponding matching implementation.
     Only one of the configuration property should be set [textMatchConfig, fileSizeConfig, fileExtensionConfig, filePasswordConfig, fileClassifierConfig].
  V3DLPFilePasswordConfig:
    type: object
    required:
      - "applicableFileTypes"
      - "matchCriteria"
    properties:
        applicableFileTypes:
          type: array
          items:
            type: string
          description: File types that can be applied. Can be ["PDF", "WORD", "EXCEL", "POWERPOINT", "ZIP", "CSV", "TXT"].
        matchCriteria:
          type: string
          description: |
           Based on the criteria, whether a file is password protected or not means a match.
           Can be ["PASSWORD_PROTECTED", "NOT_PASSWORD_PROTECTED"]. The default is "NOT_PASSWORD_PROTECTED".
    description: Password protected detection config for files that are password protected or not.
  V3DLPFileExtensionConfig:
    type: object
    required:
      - "allowLists"
    properties:
      allowLists:
        type: array
        items:
          type: string
        description: File extensions that are allowed.
      blockLists:
        type: array
        items:
          type: string
        description: File extensions that are blocked.
    description: Extension detection config for allowed and blocked types of file extensions.
  V3DLPFileSizeConfig:
    type: object
    properties:
      sizeLimit:
        type: integer
        format: int32
    description: File size config defines maximum allowed size of file. Default max size limit is 20 MB.
  V3DLPTextMatchConfig:
    type: object
    properties:
      dictionaries:
        type: array
        items:
         $ref: '#/definitions/V3DLPDictionaryMeta'
      countUniqueOccurrences:
        type: integer
        format: int32
      applicableFileTypes:
        type: array
        items:
         type: string
        description: |
          File types must be applied only for rule type "FileContent", otherwise must be empty.
          Can be ["PDF", "WORD", "EXCEL", "POWERPOINT", "ZIP", "CSV", "TXT"].
    description: |
      This is a configuration that can be used to match text or regex.
      Configuration that can be used by a rule. This is a configuration that can be used to match text or regex.
      This configuration also corresponds to V2 TextMatch/RegexMatch of dictionaries.
  V3DLPDictionaryMeta:
    type: object
    required:
      - "dictId"
      - "version"
      - "name"
    properties:
      dictId:
        type: string
      version:
        type: string
      name:
        type: string
    description: Identity of a dictionary.
  V3DLPFileClassifierConfig:
    type: object
    required:
      - "classifiers"
      - "applicableFileTypes"
    properties:
      classifiers:
        type: object
        additionalProperties:
         type: string
        description: |
         Classifier is defined as a Key and its Value: e.g.: "classification": "Internal".
         Name and value can contain UTF-8 characters. Neither the name nor value cannot be left empty.
         Maximum 30 characters for the name and value, case insensitive.
         If files contains k-v pairs in the classifers map, it means a match. Maximum 30 classifiers per policy.
      applicableFileTypes:
        type: array
        items:
         type: string
        description: |
          File types that can be applied. Can be ["PDF", "WORD", "EXCEL", "POWERPOINT", "ZIP", "CSV", "TXT"].
  V3DLPPolicyAppliesTo:
    type: object
    required:
      - "dataType"
      - "action"
      - "rules"
    properties:
      dataType:
        type: string
        description: |
          The list of data types that policy should apply to. Can't be empty.
          Can be ["Messages","RoomMeta", "SignalMeta", "FileContent", "FileMeta"].
      action:
        type: string
        description: |
          Action to be taken on violation detection.
          Can be ["Block", "Warn", "LogOnly"]. The default is "LogOnly".
      rules:
        type: array
        items:
          $ref: '#/definitions/V3DLPRule'
  V3DLPPolicyResponse:
    type: object
    properties:
      data:
        $ref: '#/definitions/V3DLPPolicy'
    description: Policy Response.
  V3DLPPoliciesCollectionResponse:
    type: object
    properties:
      policies:
        type: array
        description: List of policies.
        items:
          $ref: '#/definitions/V3DLPPolicy'
      page:
        type: integer
        format: int32
        description: The starting page for pagination.
      size:
        type: integer
        format: int32
        description: Size of policies displayed per page.
      pageCount:
        type: integer
        format: int32
        description: Total number of pages available.
    description: List of policies.
  V3DLPViolationMessageResponse:
    type: object
    properties:
      violations:
        type: array
        description: A representation of list of violations due to messages sent by a user of Symphony
        items:
          $ref: '#/definitions/V3DLPViolationMessage'
      nextOffset:
        type: string
        description: Offset for the next chunk of violations to be submitted in the next request.  Value is null if there are no further violations.
  V3DLPViolationStreamResponse:
    type: object
    properties:
      violations:
        type: array
        items:
          # A representation of list of violations due to rooms creation/update sent by a user of Symphony
          $ref: '#/definitions/V3DLPViolationStream'
      nextOffset:
        type: string
        description: Offset for the next chunk of violations to be submitted in the next request.  Value is null if there are no further violations.
  V3DLPViolationSignalResponse:
    type: object
    properties:
      violations:
        type: array
        description: A representation of list of violations due to signal creation/update sent by a user of Symphony
        items:
          $ref: '#/definitions/V3DLPViolationSignal'
      nextOffset:
        type: string
        description: Offset for the next chunk of violations to be submitted in the next request.  Value is null if there are no further violations.
  V3DLPViolationMessage:
    type: object
    properties:
      violation:
        # A representation of a violation due to a message sent by a user of Symphony
        $ref: '#/definitions/V3DLPViolation'
      message:
        # Message details when DLP was enforced
        $ref: '#/definitions/V4Message'
      diagnostic:
        type: string
        description: |
          A diagnostic message containing an error message in the event there are parsing errors.
          May also be present in the case of a successful call if there is useful narrative to return.
  V3DLPViolationStream:
    type: object
    properties:
      violation:
        # A representation of a violation due to rooms creation/update sent by a user of Symphony
        $ref: '#/definitions/V3DLPViolation'
      stream:
        # Room details when DLP was enforced
        $ref: '#/definitions/V1DLPStream'
  V3DLPViolationSignal:
    type: object
    properties:
      violation:
        # A representation of a violation due to signal creation/update sent by a user of Symphony
        $ref: '#/definitions/V3DLPViolation'
      signal:
        # Signal details when DLP was enforced
        $ref: '#/definitions/V1DLPSignal'
  V3DLPViolation:
    type: object
    description: A representation of a violation due to an event created by a user of Symphony
    properties:
      enforcementEventID:
        type: string
        description: Enforcement event ID. Unique ID that identifies this enforcement.
      entityID:
        type: string
        description: Entity ID is the content Id of the violation, for example, for messages, its the Id of the message
      createTime:
        type: integer
        format: int64
        description: Timestamp of the violation in milliseconds since Jan 1 1970
      lastModified:
        type: integer
        format: int64
        description: Timestamp of the last modification of violation in milliseconds since Jan 1 1970
      requesterId:
        type: integer
        format: int64
        description: Id of the requester responsible for the message/stream/signal
      details:
        type: array
        description: JSON representation of the details of the violation.
        items:
          type: object
      action:
        type: string
        description: action taken such as BLOCK or WARN.  See outcome for a more detailed description of the outcome this action.
      outcome:
        # Detailed outcome of the DLP enforcement such as REJECTED_VIOLATION, ACCEPTED_WARNING, ACCEPTED_LEGACY_CLIENT etc.
        $ref: '#/definitions/V1DLPOutcome'
      version:
        type: string
        description: Version of application which processed the message and produced this violation.
      ignoreDLPwarning:
          type: boolean
          description: Did the user chose to ignore DLP warning that was presented?
  Pagination:
    type: object
    required:
      - cursors
    properties:
      cursors:
        type: object
        required:
          - before
          - after
        properties:
          before:
            type: string
            description: |
              This is the opaque url-safe string that points to the start of the page of data
              that has been returned.
            example: "MTAxNTExOTQ1MjAwNzI5NDE="
          after:
            type: string
            description: |
              This is the opaque url-safe string that points to the end of the page of data
              that has been returned.
            example: "NDMyNzQyODI3OTQw"
      previous:
        type: string
        description: |
          API endpoint that will return the previous page of data. If not included, this is
          the first page of data.
        example: "https://tenantapi.d.isym.io/v1/tenantinfo?limit=25&before=MTAxNTExOTQ1MjAwNzI5NDE="
      next:
        type: string
        description: |
          API endpoint that will return the next page of data. If not included, this is the
          last page of data. Due to how pagination works with visibility and privacy, it is
          possible that a page may be empty but contain a 'next' paging link. Stop paging when
          the 'next' link no longer appears.
        example: "https://tenantapi.d.isym.io/v1/tenantinfo?limit=25&after=NDMyNzQyODI3OTQw"
  V1AuditTrailInitiatorResponse:
    description: |
      Audit Trail Initiator object response.
      The attributes may vary according to the action.
      There are different types of action and each action could have specific attributes.
    type: object
    properties:
      action:
        description: The audit trail action that has peformed
        type: string
      actionName:
        description: The audit trail action name that has peformed
        type: string
      timestamp:
        description: The timestamp when the action has occurred
        type: string
      initiatorId:
        description: The user's id that has performed the action
        type: string
      initiatorUsername:
        description: The username that has performed the action
        type: string
      initiatorEmailAddress:
        description: The user's e-mail address that has performed the action
        type: string
    additionalProperties: true
  V1AuditTrailInitiatorList:
    type: object
    properties:
      items:
        type: array
        items:
          $ref: '#/definitions/V1AuditTrailInitiatorResponse'
      pagination:
        type: object
        $ref: "#/definitions/Pagination"


#
# Deprecated definitions
#
  MessageSubmission:
    type: object
    properties:
      format:
        type: string
        enum:
          - TEXT
          - MESSAGEML
      message:
        type: string
  V2MessageSubmission:
    type: object
    properties:
      format:
        type: string
        enum:
          - TEXT
          - MESSAGEML
      message:
        type: string
      attachments:
        type: array
        items:
          $ref: '#/definitions/AttachmentInfo'
  MessageImportList:
    description: |
      An ordered list of historic messages to be imported.
      A list of import responsees will be returned in the same order.
    type: array
    items:
      $ref: '#/definitions/ImportedMessage'
  ImportedMessage:
    description: |
      A historic message to be imported into the system.
      The importing user must have the Content Management role.
      Also, the importing user must be a member of the conversation it is importing into.
      The user that the message is intended to have come from must also be present in the conversation.
      The intended message timestamp must be a valid time from the past. It cannot be a future timestamp.
      By design, imported messages do not stream to datafeed or firehose endpoints.
    type: object
    properties:
      message:
        type: string
        format: MessageML
        description: Message text in MessageML
      format:
        type: string
        enum:
          - TEXT
          - MESSAGEML
      intendedMessageTimestamp:
        description: |
          The timestamp representing the time when the message was sent in the original system
          in milliseconds since Jan 1st 1970.
        type: integer
        format: int64
      intendedMessageFromUserId:
        description: |
          The long integer userid of the Symphony user who you intend to show sent the message.
        type: integer
        format: int64
      originatingSystemId:
        description: |
          The ID of the system through which the message was originally sent.
        type: string
      streamId:
        type: string
    required:
    - message
    - intendedMessageTimestamp
    - intendedMessageFromUserId
    - originatingSystemId
    - streamId
  V2MessageImportList:
      description: |
        An ordered list of historic messages to be imported.
        A list of import responsees will be returned in the same order.
      type: array
      items:
        $ref: '#/definitions/V2ImportedMessage'
  V2ImportedMessage:
    description: |
      A historic message to be imported into the system.
      The importing user must have the Content Management role.
      Also, the importing user must be a member of the conversation it is importing into.
      The user that the message is intended to have come from must also be present in the conversation.
      The intended message timestamp must be a valid time from the past. It cannot be a future timestamp.
      By design, imported messages do not stream to datafeed or firehose endpoints.
    type: object
    properties:
      message:
        type: string
        format: MessageML
        description: Message text in MessageML
      format:
        type: string
        enum:
          - TEXT
          - MESSAGEML
      intendedMessageTimestamp:
        description: |
          The timestamp representing the time when the message was sent in the original system
          in milliseconds since Jan 1st 1970.
        type: integer
        format: int64
      intendedMessageFromUserId:
        description: |
          The long integer userid of the Symphony user who you intend to show sent the message.
        type: integer
        format: int64
      originatingSystemId:
        description: |
          The ID of the system through which the message was originally sent.
        type: string
      originalMessageId:
        description: |
          The ID of the message in the original system.
        type: string
      streamId:
        type: string
    required:
    - message
    - intendedMessageTimestamp
    - intendedMessageFromUserId
    - originatingSystemId
    - streamId
  ImportResponseList:
    type: array
    items:
      $ref: '#/definitions/ImportResponse'
  ImportResponse:
    type: object
    properties:
      messageId:
        description: |
          If the message was successfully imported then the message ID in the system
          of the newly created message.
        type: string
      diagnostic:
        description: |
          A diagnostic message containing an error message in the event that the
          message import failed. May also be present in the case of a successful
          call if there is useful narrative to return.
        type: string
  V2ImportResponseList:
    type: array
    items:
      $ref: '#/definitions/V2ImportResponse'
  V2ImportResponse:
    type: object
    properties:
      messageId:
        description: |
          If the message was successfully imported then the message ID in the system
          of the newly created message.
        type: string
      originatingSystemId:
        description: |
          The ID of the system through which the message was originally sent.
        type: string
      originalMessageId:
        description: |
          The ID of the message in the original system.
        type: string
      diagnostic:
        description: |
          A diagnostic message containing an error message in the event that the
          message import failed. May also be present in the case of a successful
          call if there is useful narrative to return.
        type: string
  BaseMessage:
    type: object
    discriminator: messageType
    properties:
      id:
        type: string
        description: The messageId is assigned by the ingestor service when a message is sent.
      timestamp:
        type: string
      messageType:
        type: string
      streamId:
        type: string
    required:
    - messageType
    - timestamp
    - streamId
  V1HealthCheckResponse:
    deprecated: true
    type: object
    properties:
      podConnectivity:
        type: boolean
        description: Indicates whether the Agent server can connect to the Pod
      podConnectivityError:
        type: string
        description: Error details in case of no Pod connectivity
      keyManagerConnectivity:
        type: boolean
        description: Indicates whether the Agent server can connect to the Key Manager
      keyManagerConnectivityError:
        type: string
        description: Error details in case of no Key Manager connectivity
      version:
        type: string
        description: The version number of the Agent server
  Message:
    type: object
    description: A representation of a message sent by a user of Symphony.
    allOf:
    - $ref: '#/definitions/BaseMessage'
    - type: object
      properties:
        message:
          type: string
          format: MessageML
          description: Message text in MessageML
        fromUserId:
          type: integer
          format: int64
          description: the Symphony userId of the user who sent the message. This will be populated by the server (and actually ignored if included when sending a message).
      required:
      - message
      - fromUserId
  MessageList:
    type: array
    items:
      $ref: '#/definitions/Message'





© 2015 - 2025 Weber Informatics LLC | Privacy Policy