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

20_10_0_LOCAL.pod-api-public-deprecated.yaml Maven / Gradle / Ivy

There is a newer version: 8.0.5
Show newest version
swagger: '2.0'
info:
  version: '20.10.0'
  title: Pod API
  description: |
    This document refers to Symphony API calls that do not need
    encryption or decryption of content.

    - sessionToken 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 made no change to the
    system even if ome subset of the request would have succeeded.
    - If this contract cannot be met for any reason then this is an error
    and the response code will be 50X.
paths:
  '/v1/companycert/list':
    get:
      summary: List all trusted certs
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: skip
          description: Pagination start
          in: query
          required: false
          type: integer
        - name: limit
          description: Row limit
          in: query
          required: false
          type: integer
      tags:
        - Security
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/CompanyCertInfoList'
        '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/companycert/create':
    post:
      summary: Create a company trusted or untrusted certificate.
        Different from V1 in that we reject expired certificates.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: cert
          in: body
          required: true
          schema:
            $ref: '#/definitions/CompanyCert'
      tags:
        - Security
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/CompanyCertDetail'
        '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/companycert/delete':
    post:
      summary: Delete a company certificate
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: fingerPrint
          in: body
          required: true
          schema:
            $ref: '#/definitions/StringId'
      tags:
        - Security
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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/companycert/{fingerPrint}/get':
    get:
      summary: Get the details of a company certificate
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: fingerPrint
          description: Certificate fingerPrint (ID)
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Security
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/CompanyCertDetail'
        '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/companycert/{fingerPrint}/update':
    post:
      summary: Update a company certificate
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: fingerPrint
          description: Certificate fingerPrint (ID)
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: certAttributes
          in: body
          required: true
          schema:
            $ref: '#/definitions/CompanyCertAttributes'
      tags:
        - Security
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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/companycert/{fingerPrint}/issuedBy':
    get:
      summary: |
        Return a list of all certificates which were verified to the cert whose
        fingerprint is passed.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: fingerPrint
          description: Certificate fingerPrint (ID)
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Security
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/CompanyCertInfoList'
        '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/companycert/podmanaged/list':
    get:
      summary: List all trusted certs
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: skip
          description: Pagination start
          in: query
          required: false
          type: integer
        - name: limit
          description: Row limit
          in: query
          required: false
          type: integer
      tags:
        - Security
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/CompanyCertInfoList'
        '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/companycert/type/list':
    post:
      summary: List all certs of the given types
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: typeIdList
          description: Certificate type list
          in: body
          required: true
          schema:
            $ref: '#/definitions/CompanyCertTypeList'
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: skip
          description: Pagination start
          in: query
          required: false
          type: integer
        - name: limit
          description: Row limit
          in: query
          required: false
          type: integer
      tags:
        - Security
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/CompanyCertInfoList'
        '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/podcert':
    get:
      summary: |
        Retrieve the pod certificate that can be use to validate signed JWT tokens generated from the pod
      produces:
        - application/json
      tags:
        - Pod
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/PodCertificate'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/connection/list':
    get:
      summary: List of requesting user's connection
      description: |
        This retrieves all connections of the requesting user. (i.e. both connections in which the requesting user is the sender and those
        in which the requesting user is the inivtee) By default, if you haven't specified the connection status to filter on, this call will only
        return results for both "pending_incoming" and "pending_outgoing". You can optionally filter by userIds to further restrict the results of
        a specific connection status. If the users are in the same private pod, the users have an implicit connection status of "accepted". Those
        users will not be returned in the response if you don't specify the connection status as "accepted" (default is "pending")
        and the explicit userIds in the request.
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: status
          description: |
            Filter the connection list based on the connection status.
            The connection status can only be pending_incoming, pending_outgoing, accepted, rejected, or all (all of the above)
          in: query
          type: string
          enum:
            - PENDING_INCOMING
            - PENDING_OUTGOING
            - ACCEPTED
            - REJECTED
            - ALL
        - name: userIds
          description: |
            The userIds parameter should be specified as a comma delimited list of user ids and can be used to restrict the results of a specific connection.
            Note that this is particularly important if the caller intends to retrieve results for implicit connection (user within the same pod).
            Implicit connections will not be included in the response if userId is not provided.
          in: query
          type: string
      tags:
        - Connection
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/UserConnectionList'
        '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: 'Not Found: Connection cannot be found.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/connection/create':
    post:
      summary: Sends an invitation to connect with another user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: connectionRequest
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserConnectionRequest'
      tags:
        - Connection
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/UserConnection'
        '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: 'Not Found: User cannot be found.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/connection/accept':
    post:
      summary: Accept the connection request for the requesting user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: connectionRequest
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserConnectionRequest'
      tags:
        - Connection
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UserConnection'
        '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: 'Not Found: Connection cannot be found.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/connection/reject':
    post:
      summary: Reject the connection request for the requesting user.
      description: |
        Reject the connection between the requesting user and request sender. If both users are in the same private pod,
        an error will be returned because both users have an implicit connection which cannot be rejected.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: connectionRequest
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserConnectionRequest'
      tags:
        - Connection
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UserConnection'
        '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: 'Not Found: Connection cannot be found.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/connection/user/{userId}/info':
    get:
      summary: The status of the connection invitation to another user.
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: userId
          description: user Id
          in: path
          required: true
          type: string
      tags:
        - Connection
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/UserConnection'
        '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: 'Not Found: Connection cannot be found.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/connection/user/{uid}/remove':
    post:
      summary: Removes a connection with a user.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
      tags:
        - Connection
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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: 'Not Found: Connection cannot be found.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/im/create':
    post:
      summary: Create a new single or multi party instant message conversation between the caller and specified users.
      description: |
        At least one user ID must be provided or
        an error response will be sent.

        The caller is implicitly included in the members of the
        created chat.

        Duplicate users will be included in the membership of the chat but
        the duplication will be silently ignored.

        If there is an existing IM conversation with the same set of participants then
        the id of that existing stream will be returned.

        This method was incorrectly specified to take a query parameter in
        version 1.0 of this specification but now expects a JSON array of
        user IDs in the body of the request.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: uidList
          description: List of (integer) User IDs of participants
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserIdList'
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/Stream'
        '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'
  '/v1/presence/feed/create':
    post:
      summary: Create Presence status feed.
      description: |
        Create a new stream capturing presence status changes ("presence feed").
        When read from, the feed will return the current presence status of company (pod) users
        if it has changed since the last read.

        Returns the ID of the presence feed to be used in subsequent read operations.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Presence
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/StringId'
        '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'
  '/v1/presence/feed/{feedId}/read':
    get:
      summary: Read a presence status feed.
      description: |
        Returns the current presence status of company (pod) users
        if it has changed since the last read. Returns up to 500 records at a time.
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: feedId
          description: Presence feed ID.
          in: path
          required: true
          type: string
      tags:
        - Presence
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V2PresenceList'
        '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'
  '/v1/presence/feed/{feedId}/delete':
    post:
      summary: Delete a presence status feed.
      description: |
        Returns the ID of the deleted feed.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: feedId
          description: Presence feed ID.
          in: path
          required: true
          type: string
      tags:
        - Presence
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/StringId'
        '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'
  '/v3/room/create':
    post:
      summary: Create a new chatroom.
      description: |
        Create a new chatroom.

        If no  attributes are specified, the room is created as a private chatroom.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/V3RoomAttributes'
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V3RoomDetail'
        '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'
        '451':
          description: 'Unavailable for Legal Reasons: Compliance Issues found in room creation request.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v3/room/search':
    post:
      summary: Search rooms according to the specified criteria.
      produces:
        - application/json
      consumes:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - 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. Must be a positive
            integer and must not exceed 100
          in: query
          type: integer
          required: false
        - name: query
          description: The search query object.
          in: body
          required: true
          schema:
            $ref: '#/definitions/V2RoomSearchCriteria'
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V3RoomSearchResults'
        '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'
  '/v3/room/{id}/info':
    get:
      summary: Get information about a partcular chatroom.
      produces:
        - application/json
      parameters:
        - name: id
          description: Room streamId
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V3RoomDetail'
        '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'
  '/v1/room/{id}/setActive':
    post:
      summary: Deactivate or reactivate a chatroom. At creation, a new chatroom is active.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: id
          description: Room streamId
          in: path
          required: true
          type: string
        - name: active
          in: query
          required: true
          type: boolean
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/RoomDetail'
        '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'
  '/v3/room/{id}/update':
    post:
      summary: Update the attributes of an existing chatroom.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: id
          description: Room streamId
          in: path
          required: true
          type: string
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/V3RoomAttributes'
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V3RoomDetail'
        '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'
        '451':
          description: 'Unavailable for Legal Reasons: Compliance Issues found in room update request.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/room/{id}/membership/add':
    post:
      summary: Adds new member to an existing room.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: id
          description: Room streamId
          in: path
          required: true
          type: string
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserId'
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Room Membership
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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'
  '/v1/room/{id}/membership/remove':
    post:
      summary: Removes member from an existing room.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: id
          description: Room streamId
          in: path
          required: true
          type: string
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserId'
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Room Membership
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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'
  '/v1/room/{id}/membership/promoteOwner':
    post:
      summary: Promotes user to owner.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: id
          description: Room streamId
          in: path
          required: true
          type: string
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserId'
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Room Membership
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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'
  '/v1/room/{id}/membership/demoteOwner':
    post:
      summary: Demotes room owner.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: id
          description: Room streamId
          in: path
          required: true
          type: string
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserId'
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Room Membership
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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'
  '/v2/room/{id}/membership/list':
    get:
      summary: Lists current members of an existing room.
      produces:
        - application/json
      parameters:
        - name: id
          description: Room streamId
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Room Membership
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/MembershipList'
        '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'
  '/v2/sessioninfo':
    get:
      summary: Get information about the current user's session.
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Session
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/UserV2'
        '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/user':
    get:
      summary: Get user information
      produces:
        - application/json
      parameters:
        - name: uid
          description: User ID as a decimal integer
          in: query
          required: false
          type: integer
          format: int64
        - name: email
          description: Email address
          in: query
          required: false
          type: string
          format: email
        - name: username
          description: login user name
          in: query
          required: false
          type: string
        - name: local
          description: |
            If true then a local DB search will be performed and only local pod users will be
            returned. If absent or false then a directory search will be performed and users
            from other pods who are visible to the calling user will also be returned.
            Note: for username search, the local flag must be true
          in: query
          required: false
          type: boolean
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Users
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/UserV2'
        '204':
          description: 'No user found.'
        '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'
  '/v3/users':
    get:
      summary: |
        Search users by emails or ids.
        Only one of the search lists should be informed at a time.
        Search lists may containt up to 100 elements.
      produces:
        - application/json
      parameters:
        - name: uid
          description: User IDs as a list of decimal integers separated by comma
          in: query
          required: false
          type: string
        - name: email
          description: List of email addresses separated by comma
          in: query
          required: false
          type: string
        - name: username
          description: List of username separated by comma
          in: query
          required: false
          type: string
        - name: local
          description: |
            If true then a local DB search will be performed and only local pod users will be
            returned. If absent or false then a directory search will be performed and users
            from other pods who are visible to the calling user will also be returned.
          in: query
          required: false
          type: boolean
        - name: active
          description: |
            If not set all user status will be returned,
            if true all active users will be returned,
            if false all inactive users will be returned
          in: query
          required: false
          type: boolean
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Users
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V2UserList'
        '204':
          description: 'No user found.'
        '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'
  '/v1/user/presence/register':
    post:
      summary: Register interest in a user's presence status
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uidList
          description: List of (integer) User IDs of users whose presence to query
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserIdList'
      tags:
        - Presence
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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'
        '404':
          description: 'Not Found: user id cannot be located.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v2/user/presence':
    get:
      summary: Get presence information about the requesting user.
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Presence
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V2Presence'
        '400':
          description: 'Client error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Invalid session token'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
    post:
      summary: Set the presence of the requesting user.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: soft
          description:  |
            If true, the user's current status is taken into consideration. If the user is currently OFFLINE,
            the user's presence will still be OFFLINE, but the new presence will take effect when the
            user comes online. If the user is currently online, the user's activity state will be
            applied to the presence if applicable. (e.g. if you are setting their presence to AVAILABLE,
            but the user is currently idle, their status will be represented as AWAY)
          in: query
          required: false
          type: boolean
        - name: presence
          in: body
          required: true
          schema:
            $ref: '#/definitions/V2PresenceStatus'
      tags:
        - Presence
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V2Presence'
        '400':
          description: 'Client error.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Invalid session token.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v3/user/{uid}/presence':
    get:
      summary: Get presence information about a particular user.
      produces:
        - application/json
      parameters:
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
        - name: local
          description: |
            If true, a local query will be performed and the presence will be
            set to OFFLINE for users who are not local to the calling user's
            pod. If false or absent, then the presence of all local users and
            the presence of all external users to whom the calling user is
            connected will be queried.

            For external users, a "presence interest" should be registered through
            /v1/user/presence/register before querying for presence.
          in: query
          type: boolean
          required: false
          default: false
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Presence
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V2Presence'
        '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: 'Not Found: user id cannot be located.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v2/users/presence':
    get:
      summary: Get presence information about all company (pod) users.
      description: |
        The returned data is taken from the in-memory cache for performance
        reasons which means inactive users may be omitted from the response.

        All non-inactive users WILL be returned and some inactive users MAY
        be included. Any omitted user IS inactive.

        Returned records are sorted by user ID, ascending.

        This method is expensive. It pulls ALL records from the cache, sorts them and then only uses a subset.
        For large numbers of users, this can be very inefficient both due to sorting
        and due to the cache being distributed across many nodes.

        Addiionally, there is the potential to miss users if they become active
        after the page in which their user ID falls has already been read by the client.
        To avoid this situation, a presence feed should be created (and optionally read from)
        first to capture presence changes of users who get reactivated during a paged call to this endpoint.
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: lastUserId
          description: Last user ID retrieved. Used for paging; if provided, results will skip users with IDs less than this parameter.
          in: query
          required: false
          type: integer
          format: int64
        - name: limit
          description: Max number of records to return. If no value is provided, 1000 is the default. The maximum supported value is 5000.
          in: query
          type: integer
          required: false
      tags:
        - Presence
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V2PresenceList'
        '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'
  '/v3/user/presence':
    post:
      summary: Set presence information for a particular user.
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: soft
          description:  |
            If true, the user's current status is taken into consideration. If the user is currently OFFLINE,
            the user's presence will still be OFFLINE, but the new presence will take effect when the
            user comes online. If the user is currently online, the user's activity state will be
            applied to the presence if applicable. (e.g. if you are setting their presence to AVAILABLE,
            but the user is currently idle, their status will be represented as AWAY)
          in: query
          required: false
          type: boolean
        - name: presence
          in: body
          required: true
          schema:
            $ref: '#/definitions/V2UserPresence'
      tags:
        - Presence
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V2Presence'
        '400':
          description: 'Client error.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden.'
          schema:
            $ref: '#/definitions/Error'
        '404':
          description: 'Not Found: user id cannot be located.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/user/search':
    post:
      summary: Search for users by name or email address
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: skip
          description: number of records to skip
          in: query
          type: integer
        - name: limit
          description: Max number of records to return. If no value is provided, 50 is the default.
          in: query
          type: integer
        - name: local
          description: |
            If true then a local DB search will be performed and only local pod users will be
            returned. If absent or false then a directory search will be performed and users
            from other pods who are visible to the calling user will also be returned.
          in: query
          required: false
          type: boolean
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: searchRequest
          description: search criteria
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserSearchQuery'
      tags:
        - Users
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/UserSearchResults'
        '204':
          description: 'No user found.'
        '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'
  '/v1/streams/list':
    post:
      summary: |
        Retrieve a list of all streams of which the requesting user is a member,
        sorted by creation date (ascending).
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - 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
        - name: filter
          description: Stream filtering criteria.
          in: body
          schema:
            $ref: '#/definitions/StreamFilter'
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/StreamList'
        '204':
          description: 'Stream not found.'
        '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'
  '/v2/streams/{sid}/info':
    get:
      summary: Get information about a partcular stream.
      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
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V2StreamAttributes'
        '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'
  '/v1/streams/{sid}/attachments':
    get:
      summary: Get attachments in a particular stream.
      produces:
        - application/json
      parameters:
        - name: sid
          description: Stream Id
          in: path
          required: true
          type: string
        - name: since
          description: |
            Timestamp of first required attachment.
            This is a long integer value representing milliseconds since Jan 1 1970
          in: query
          required: false
          type: integer
          format: int64
        - name: to
          description: |
            Timestamp of last required attachment.
            This is a long integer value representing milliseconds since Jan 1 1970
          in: query
          required: false
          type: integer
          format: int64
        - name: limit
          description: Maximum number of attachments to return. Default is 50. Must be a positive
            integer and must not exceed 100.
          in: query
          type: integer
          required: false
        - name: sortDir
          description: |
            Attachment date sort direction : ASC or DESC (default to ASC)
          in: query
          type: string
          required: false
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/StreamAttachmentResponse'
        '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'
  '/v1/admin/app/entitlement/list':
    get:
      summary: Get the list of application entitlements for the company
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - AppEntitlement
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/PodAppEntitlementList'
        '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: Update the application entitlements for the company
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/PodAppEntitlementList'
      tags:
        - AppEntitlement
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/PodAppEntitlementList'
        '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/admin/disclaimer/{did}':
    get:
      summary: Get a disclaimer by disclaimer id
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: did
          in: path
          type: string
          description: The ID of the entity
          required: true
      tags:
        - Disclaimer
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/Disclaimer'
        '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/admin/disclaimer/list':
    get:
      summary: List all disclaimers for the company (pod)
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Disclaimer
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/DisclaimerList'
        '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/admin/disclaimer/{did}/users':
    get:
      summary: List all users assigned to this disclaimer
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: did
          in: path
          type: string
          description: The ID of the entity
          required: true
      tags:
        - Disclaimer
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UserIdList'
        '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/admin/group/list':
    get:
      summary: Get a list of all Information Barrier Groups
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - InfoBarriers
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/GroupList'
        '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/admin/group/{gid}/membership/list':
    get:
      summary: Get the list of userids in this Information Barrier Group
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: gid
          description: URL-Safe encoded Group ID
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - InfoBarriers
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/IntegerList'
        '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: 'Not Found: Group cannot be found.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/admin/group/{gid}/membership/add':
    post:
      summary: Add members to an Information Barrier group.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: gid
          description: URL-Safe encoded Group ID
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: users
          in: body
          required: true
          schema:
            $ref: '#/definitions/IntegerList'
      tags:
        - InfoBarriers
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/BulkActionResult'
        '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/admin/group/{gid}/membership/remove':
    post:
      summary: Remove members from an Information Barrier group
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: gid
          description: URL-Safe encoded Group ID
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: users
          in: body
          required: true
          schema:
            $ref: '#/definitions/IntegerList'
      tags:
        - InfoBarriers
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/BulkActionResult'
        '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/admin/im/create':
    post:
      summary: Create a new single or multi party instant message conversation
      description: |
        At least two user IDs must be provided or
        an error response will be sent.

        The caller is not included in the members of the
        created chat.

        Duplicate users will be included in the membership of the chat but
        the duplication will be silently ignored.

        If there is an existing IM conversation with the same set of participants then
        the id of that existing stream will be returned.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: uidList
          description: List of (integer) User IDs of participants
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserIdList'
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/Stream'
        '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'
  '/v1/admin/messagesuppression/{id}/suppress':
    post:
      summary: Suppress a message
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: id
          description: URL-Safe encoded Message ID
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - MessageSuppression
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/MessageSuppressionResponse'
        '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/admin/policy/list':
    get:
      summary: Get all Information Policies
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - InfoBarriers
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/PolicyList'
        '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/admin/room/{id}/setActive':
    post:
      summary: Deactivate or reactivate a chatroom via AC Portal.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: id
          description: Room streamId
          in: path
          required: true
          type: string
        - name: active
          in: query
          required: true
          type: boolean
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/RoomDetail'
        '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'
  '/v1/admin/room/{id}/membership/list':
    get:
      summary: Lists current and previous members of an existing room.
      produces:
        - application/json
      parameters:
        - name: id
          description: Room streamId
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: includePastMembers
          in: query
          required: false
          type: boolean
          description: If true, the membership list will include past members of the stream. If false, the listing will only incude current members. Default false.
      tags:
        - Room Membership
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/MembershipList'
        '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'
  '/v1/admin/room/{id}/membership/add':
    post:
      summary: Add a member to an existing room.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: id
          description: Room streamId
          in: path
          required: true
          type: string
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserId'
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Room Membership
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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'
  '/v1/admin/room/{id}/membership/remove':
    post:
      summary: Remove a member from a room.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: id
          description: Room streamId
          in: path
          required: true
          type: string
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserId'
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Room Membership
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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'
  '/v2/admin/user/list':
    get:
      summary: Retrieve a list of all users in the company (pod)
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session Authentication token.
          in: header
          required: true
          type: string
        - name: skip
          description: Number of users to skip. Default is 0. Must be a integer equals or bigger than 0.
          in: query
          type: integer
          required: false
        - name: limit
          description: Maximum number of users to return. Default is 100. Must be a positive
            integer and must not exceed 1000.
          in: query
          type: integer
          required: false
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V2UserDetailList'
        '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/admin/user/find':
    post:
      summary: Find a user based on attributes
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: skip
          description: Number of users to skip. Default is 0. Must be a integer equals or bigger than 0.
          in: query
          type: integer
          required: false
        - name: limit
          description: Maximum number of users to return. Default is 100. Must be a positive
            integer and must not exceed 1000.
          in: query
          type: integer
          required: false
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserFilter'
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UserDetailList'
        '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/admin/user/{uid}/roles/add':
    post:
      summary: Add a role to a user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/StringId'
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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/admin/user/{uid}/roles/remove':
    post:
      summary: Remove a role from a user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/StringId'
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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: 'Not Found: User cannot be found'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/admin/user/{uid}/app/entitlement/list':
    get:
      summary: Get the list of application entitlements for this user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
      tags:
        - AppEntitlement
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UserAppEntitlementList'
        '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: Update the application entitlements for this user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserAppEntitlementList'
      tags:
        - AppEntitlement
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UserAppEntitlementList'
        '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/admin/user/{uid}/avatar':
    get:
      summary: Get the URL of the avatar of a particular user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/AvatarList'
        '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/admin/user/{uid}/avatar/update':
    post:
      summary: Update the avatar of a particular user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/AvatarUpdate'
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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/admin/user/{uid}/disclaimer':
    get:
      summary: Get the disclaimer assigned to a user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/Disclaimer'
        '204':
          description: No content. User doesn't have an assigned disclaimer
        '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: Unassign a disclaimer from a user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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/admin/user/{uid}/disclaimer/update':
    post:
      summary: Assign a disclaimer to a user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/StringId'
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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/admin/user/{uid}/delegates':
    get:
      summary: Get the delegates assigned to a user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
      tags:
        - User
      responses:
        '200':
          description: The userid's of the delegates of this user.
          schema:
            $ref: '#/definitions/IntegerList'
        '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/admin/user/{uid}/delegates/update':
    post:
      summary: Update the delegates assigned to a user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/DelegateAction'
      tags:
        - User
      responses:
        '200':
          description: Sucesss.
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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/admin/user/{uid}/features':
    get:
      summary: Get the list of Symphony feature entitlements enabled for a particular user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/FeatureList'
        '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/admin/user/{uid}/features/update':
    post:
      summary: Update the list of Symphony feature entitlements for a particular user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/FeatureList'
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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/user/{uid}/follow':
    post:
      summary: Make a list of users start following a specific user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: User ID as a decimal integer of the user to be followed
          in: path
          required: true
          type: integer
          format: int64
        - name: uidList
          description: List of (integer) User IDs of the followers
          in: body
          required: true
          schema:
            $ref: '#/definitions/FollowersList'
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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/user/{uid}/unfollow':
    post:
      summary: Make a list of users unfollowing a specific user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: User ID as a decimal integer of the user to be unfollowed
          in: path
          required: true
          type: integer
          format: int64
        - name: uidList
          description: List of (integer) User IDs of the followers
          in: body
          required: true
          schema:
            $ref: '#/definitions/FollowersList'
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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/user/{uid}/followers':
    get:
      summary: Returns the list of followers for a specific user
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: User ID as a decimal integer of the user we want to get the followers list
          in: path
          required: true
          type: integer
          format: int64
        - name: limit
          description: This is the maximum number of objects that may be returned.
          in: query
          required: false
          type: integer
        - name: before
          description: Returns results from an opaque “before” cursor value as presented via a response cursor.
          in: query
          required: false
          type: string
        - name: after
          description: Returns results from an opaque “after” cursor value as presented via a response cursor.
          in: query
          required: false
          type: string
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/FollowersListResponse'
        '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/user/{uid}/following':
    get:
      summary: Returns the list of users that a specific user is following
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: User ID as a decimal integer of the user we want to get the following list
          in: path
          required: true
          type: integer
          format: int64
        - name: limit
          description: This is the maximum number of objects that may be returned.
          in: query
          required: false
          type: integer
        - name: before
          description: Returns results from an opaque “before” cursor value as presented via a response cursor.
          in: query
          required: false
          type: string
        - name: after
          description: Returns results from an opaque “after” cursor value as presented via a response cursor.
          in: query
          required: false
          type: string
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/FollowingListResponse'
        '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/admin/user/{uid}/status':
    get:
      summary: Get the status, active or inactive, for a particular user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UserStatus'
        '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/admin/user/{uid}/status/update':
    post:
      summary: Update the status of a particular user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserStatus'
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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/admin/streams/list':
    post:
      summary: |
        Retrieve all the streams across the enterprise where the membership of the stream has been modified between a given time range
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: skip
          description: |
            Number of items to skip. Default is 0.
          in: query
          type: integer
        - name: limit
          description: |
            Maximum number of items to return. Default is 50.  This value cannot exceed 100.
          in: query
          type: integer
        - name: filter
          description: Stream filtering criteria.
          in: body
          schema:
            $ref: '#/definitions/V2AdminStreamFilter'
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V2AdminStreamList'
        '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'
  '/v1/admin/stream/{id}/membership/list':
    get:
      summary: List the current members of an existing stream.  The stream can be of type IM, MIM, or ROOM
      produces:
        - application/json
      parameters:
        - name: id
          description: stream Id
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: skip
          description: Number of items to skip. Default is 0.
          in: query
          type: integer
          required: false
        - name: limit
          description: Maximum number of items to return. Default is 100 and not to exceed 1000.
          in: query
          type: integer
          required: false
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V2MembershipList'
        '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'
  '/v1/admin/system/features/list':
    get:
      summary: Get the full set of Symphony features available for this pod
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - System
      responses:
        '200':
          description: The list of valid feature entitlement names.
          schema:
            $ref: '#/definitions/StringList'
        '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/admin/system/protocols/list':
    get:
      summary: Get a list of all URI protocols supported by the company (pod)
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - System
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/StringList'
        '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/system/protocols':
    get:
      summary: Get a list of URI protocols supported by the company (pod)
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: skip
          description: Number of items to skip. Default is 0.
          in: query
          type: integer
          required: false
        - name: limit
          description: Maximum number of items to return. Default is 100 and not to exceed 1000.
          in: query
          type: integer
          required: false
      tags:
        - System
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/StringList'
        '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/admin/system/protocols':
    post:
      summary: Add an entry to URI protocols supported by the company (pod)
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: protocol
          required: true
          description: the protocol to add
          in: body
          schema:
            $ref: '#/definitions/Protocol'
      tags:
        - System
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/Protocol'
        '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/admin/system/protocols/{scheme}':
    delete:
      summary: Remove an entry from URI protocols supported by the company (pod)
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: scheme
          required: true
          description: the scheme to remove from the protocols list
          in: path
          type: string
      tags:
        - System
      responses:
        '204':
          description: "204 response"
        '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/admin/system/roles/list':
    get:
      summary: Get a list of all roles available in the company (pod)
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - System
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/RoleDetailList'
        '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/{mid}/status':
    get:
      summary: Get the read status of a particular message.
      produces:
        - application/json
      parameters:
        - name: mid
          description: Message ID
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Message
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/MessageStatus'
        '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'
        '404':
          description: 'Not found: The informed Message ID does not exist'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/admin/app/create':
    post:
      summary: Creates a new app
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: applicationDetail
          description: Application detail to create the app with
          in: body
          required: true
          schema:
            $ref: '#/definitions/ApplicationDetail'
      tags:
        - Application
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/ApplicationDetail'
        '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'
  '/v1/admin/app/{id}/update':
    post:
      summary: Updates a app
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: id
          description: Id of the app
          in: path
          required: true
          type: string
        - name: applicationDetail
          description: Details to update the app with
          in: body
          required: true
          schema:
            $ref: '#/definitions/ApplicationDetail'
      tags:
        - Application
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/ApplicationDetail'
        '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'
  '/v1/admin/app/{id}/delete':
    post:
      summary: Deletes a app
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: id
          description: The id of the app
          in: path
          required: true
          type: string
      tags:
        - Application
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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'
  '/v1/admin/app/{id}/get':
    get:
      summary: Gets a app
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: id
          description: the id of the app to get
          in: path
          required: true
          type: string
      tags:
        - Application
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/ApplicationDetail'
        '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'
  /v1/admin/messages:
    post:
      summary: Fetch message details
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token
          in: header
          required: true
          type: string
        - name: messageIds
          description: the ids of the messages to be fetched
          in: body
          required: true
          schema:
            $ref: '#/definitions/MessageIds'
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/MessageDetails'
        '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'
        '404':
          description: 'Not found: Message ID could not be found.'
          schema:
            $ref: '#/definitions/Error'
        '422':
          description: 'Unprocessable entity: Invalid message type.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v2/admin/user/create':
    post:
      summary: Create a new V2 User
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/V2UserCreate'
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V2UserDetail'
        '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/admin/user/{uid}/update':
    post:
      summary: Update an existing V2 User
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/V2UserAttributes'
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V2UserDetail'
        '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/admin/user/{uid}':
    get:
      summary: Retreive V2 User details for a particular user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/V2UserDetail'
        '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/files/allowedTypes':
    get:
      summary: Get supported attachment types for the pod
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Pod
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/StringList'
        '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'
  '/file_ext/v1/allowed_extensions':
    get:
      consumes:
        - application/json
      produces:
        - application/json
      summary: Allows iteration of all file extensions supported for upload
      description: |
        Provides a RESTful API to iterate all file extensions configured by the tenant admin
        that are allowed for the upload.  Pagination of this list is managed through a
        combination of the optional request parameters and service-side managed maximums.

        Pagination of the results is provided through the before or after input paramters
        and presented through the opaque cursor values provided as output from a previous
        response.  Only one of before or after or neither may be provided.

        DO NOT store cursors. Cursors can quickly become invalid if items are added or deleted.
        Use them only during a short-period of time that you are traversing the list.
      operationId: listAllowedFileExtensions
      parameters:
        - name: limit
          type: integer
          required: false
          in: query
          description: |
            This is the maximum number of objects that may be returned. A query may return
            fewer than the value of limit due to filtering or service-side maximums. Do not
            depend on the number of results being fewer than the limit value to indicate your
            query reached the end of the list of data, use the absence of next instead as
            described below. For example, if you set limit to 10 and 9 results are returned,
            there may be more data available, but one item was removed due to privacy filtering.
            Some maximums for limit may be enforced for performance reasons. In all cases, the
            API returns the correct pagination links.
        - name: before
          type: string
          required: false
          in: query
          description: |
            Returns results from an opaque "before" cursor value as presented via a response cursor
        - name: after
          type: string
          required: false
          in: query
          description: |
            Returns results from an opaque "after" cursor value as presented via a response cursor
      responses:
        '200':
          description: |
            Requested sequence of file extensions object records with the page size
            limited by the optional limit paramter or the service-specific maximum
            limit offered.
          schema:
            $ref: "#/definitions/FileExtensionsResponse"
        '400':
          description: |
            Invalid arguments were passed by the client
          schema:
            $ref: "#/definitions/Error"
        '401':
          description: |
            Authentication was not provided
          schema:
            $ref: "#/definitions/Error"
        '403':
          description: |
            Authorization is not provided to this request
          schema:
            $ref: "#/definitions/Error"
        '500':
          description: |
            Unexpected service error - a retry may work
          schema:
            $ref: "#/definitions/Error"
        '503':
          description: |
            Temporarily unable to handle request - could be due to service overload or maintenance
        '504':
          description: |
            Timeout waiting on response at gateway
  '/file_ext/v1/allowed_extensions/{extension}':
    put:
      consumes:
        - application/json
      produces:
        - application/json
      summary: Allows replacement or creation of a specific file extension supported for upload
      description: |
        Provides a method to create or replace a specific file extension configured for upload
        support via an admin. The API treats the file extension in the path case-insensitively
        by converting it to lowecase.
      operationId: putAllowedFileExtension
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: extension
          in: path
          required: true
          type: string
        - in: body
          name: V3FileExtension
          required: true
          schema:
            $ref: "#/definitions/FileExtension"
      responses:
        200:
          description: "200 response"
          schema:
            $ref: "#/definitions/FileExtension"
        400:
          description: |
            Invalid arguments were passed by the client: the file extension object specified
            the source as 'system' yet the file extension is not known to the system (API cannot
            create system file extensions, only customer-defined file extensions), the extension
            in the path doesn't match the extension in the body, the length of the file extension
            exceeded the maximum length (64 characters)
          schema:
            $ref: "#/definitions/Error"
        403:
          description: |
            Authorization is not provided to this request
          schema:
            $ref: "#/definitions/Error"
        500:
          description: |
            Unexpected service error - a retry may work
          schema:
            $ref: "#/definitions/Error"
    delete:
      consumes:
        - application/json
      produces:
        - application/json
      summary: Allows deletion of a specific file extension supported for upload
      description: |
        Provides a method to delete a specific file extension configured for upload
        support via an admin. The file extension identifying the resource is treated
        case-insensitively by the API.
      operationId: deleteAllowedFileExtension
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: extension
          in: path
          required: true
          type: string
      responses:
        204:
          description: "204 response"
        400:
          description: |
            Invalid arguments were passed by the client
          schema:
            $ref: "#/definitions/Error"
        403:
          description: |
            Authorization is not provided to this request
          schema:
            $ref: "#/definitions/Error"
        500:
          description: |
            Unexpected service error - a retry may work
          schema:
            $ref: "#/definitions/Error"
  '/v1/admin/messages/{messageId}/receipts':
    get:
      summary: Fetch receipts details from a specific message.
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: messageId
          description: The message ID
          in: path
          required: true
          type: string
        - name: before
          description: Returns results from an opaque “before” cursor value as presented via a response cursor.
          in: query
          required: false
          type: string
        - name: after
          description: Returns results from an opaque “after” cursor value as presented via a response cursor.
          in: query
          required: false
          type: string
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/MessageReceiptDetailResponse'
        '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: 'Not Found: Message receipt details cannot be found.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/languages':
    get:
      summary: Lists available languages for the pod.
      produces:
        - application/json
      tags:
        - Pod
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/Languages'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/admin/messages/{messageId}/metadata/relationships':
    get:
      summary: 'Get the message metadata relationship'
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: User-Agent
          description: Request user agent.
          in: header
          required: true
          type: string
        - name: messageId
          in: path
          description: Valid id of a SOCIALMESSAGE
          required: true
          type: string
      responses:
        '200':
          description: 'Successful Operation'
          schema:
            $ref: '#/definitions/MessageMetadataResponse'
        '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/admin/user/{userId}/suspension/update':
    put:
      summary: Update the status of suspension of a particular user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token
          in: header
          required: true
          type: string
        - name: userId
          description: User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserSuspension'
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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/sessioninfo':
    get:
      deprecated: true
      summary: Get information about the current user's session.
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Session
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/SessionInfo'
        '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/companycert/create':
    post:
      deprecated: true
      summary: Create a company trusted or untrusted certificate
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: cert
          in: body
          required: true
          schema:
            $ref: '#/definitions/CompanyCert'
      tags:
        - Security
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SuccessResponse'
        '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/user':
    get:
      deprecated: true
      summary: Get user information by email address.
      produces:
        - application/json
      parameters:
        - name: email
          description: Email address
          in: query
          required: true
          type: string
          format: email
        - name: local
          description: |
            If true then a local DB search will be performed and only local pod users will be
            returned. If absent or false then a directory search will be performed and users
            from other pods who are visible to the calling user will also be returned.
          in: query
          required: false
          type: boolean
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Users
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/User'
        '204':
          description: 'No user found.'
        '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'
  '/v1/user/presence':
    get:
      deprecated: true
      summary: Get presence information about the requesting user.
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Presence
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/Presence'
          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: Invalid session token'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
    post:
      deprecated: true
      summary: Set the presence of the requesting user.
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: presence
          in: body
          required: true
          schema:
            $ref: '#/definitions/Presence'
      tags:
        - Presence
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/Presence'
          headers:
            X-Warning:
              description: This method is deprecated
              type: string
        '400':
          description: 'Client error.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized: Invalid session token.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/user/{uid}/presence':
    get:
      deprecated: true
      summary: Get presence information about a particular user.
      produces:
        - application/json
      parameters:
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Presence
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/Presence'
          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'
        '404':
          description: 'Not Found: user id cannot be located.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
    post:
      deprecated: true
      summary: LIMITED RELEASE Set presence information for a particular user.
      description: |
        Only the following states can be set
        AVAILABLE
        BUSY
        ON_THE_PHONE
        AWAY

        Attempts to set other states will result in a 403 FORBIDDEN response.

        The UNDEFINED value is an error case used to represent the case if the value stored in the
        system cannot be represented by the values known to the API.

        The other states are reserved for future use.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: presence
          in: body
          required: true
          schema:
            $ref: '#/definitions/Presence'
      tags:
        - Presence
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/Presence'
          headers:
            X-Warning:
              description: This method is deprecated
              type: string
        '400':
          description: 'Client error.'
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: 'Unauthorized.'
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: 'Forbidden.'
          schema:
            $ref: '#/definitions/Error'
        '404':
          description: 'Not Found: user id cannot be located.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v2/user/{uid}/presence':
    get:
      deprecated: true
      summary: Get presence information about a particular user.
      produces:
        - application/json
      parameters:
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
        - name: local
          description: |
            If true, a local query will be performed and the presence will be
            set to OFFLINE for users who are not local to the calling user's
            pod. If false or absent, then the presence of all local users and
            the presence of all external users to whom the calling user is
            connected will be queried.

            For external users, a "presence interest" should be registered through
            /v1/user/presence/register before querying for presence.
          in: query
          type: boolean
          required: false
          default: false
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Presence
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/Presence'
          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'
        '404':
          description: 'Not Found: user id cannot be located.'
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: 'Server error, see response body for further details.'
          schema:
            $ref: '#/definitions/Error'
  '/v1/room/create':
    post:
      deprecated: true
      summary: Create a new chatroom.
      description: |
        Create a new chatroom.

        If no attributes are specified, the room is created as a private chatroom.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/RoomCreate'
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/RoomDetail'
        '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'
  '/v2/room/create':
    post:
      deprecated: true
      summary: Create a new chatroom.
      description: |
        Create a new chatroom.

        If no  attributes are specified, the room is created as a private chatroom.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/V2RoomAttributes'
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V2RoomDetail'
          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'
  '/v2/room/search':
    post:
      deprecated: true
      summary: Search rooms according to the specified criteria.
      produces:
        - application/json
      consumes:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - 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. Must be a positive
            integer and must not exceed 100
          in: query
          type: integer
          required: false
        - name: query
          description: The search query object.
          in: body
          required: true
          schema:
            $ref: '#/definitions/RoomSearchCriteria'
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/RoomSearchResults'
          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'
  '/v1/room/{id}/info':
    get:
      deprecated: true
      summary: Get information about a partcular chatroom.
      produces:
        - application/json
      parameters:
        - name: id
          description: Room streamId
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/RoomDetail'
        '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'
  '/v2/room/{id}/info':
    get:
      deprecated: true
      summary: Get information about a partcular chatroom.
      produces:
        - application/json
      parameters:
        - name: id
          description: Room streamId
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V2RoomDetail'
          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'
  '/v1/room/{id}/update':
    post:
      deprecated: true
      summary: Update the attributes of an existing chatroom.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: id
          description: Room streamId
          in: path
          required: true
          type: string
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/RoomAttributes'
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/RoomDetail'
        '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'
  '/v2/room/{id}/update':
    post:
      deprecated: true
      summary: Update the attributes of an existing chatroom.
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: id
          description: Room streamId
          in: path
          required: true
          type: string
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/V2RoomAttributes'
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/V2RoomDetail'
          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'
  '/v1/room/{id}/membership/list':
    get:
      deprecated: true
      summary: Lists the members of an existing room.
      description: |
        Lists the members of an existing room. If the requesting user is an administrator, lists current
        and previous members. If the requesting user is a regular user, lists only current members.
      produces:
        - application/json
      parameters:
        - name: id
          description: Room streamId
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Room Membership
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/MembershipList'
        '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'
  '/v1/user/name/{userName}/get':
    get:
      deprecated: true
      summary: Get user information by user (login) name.
      description: |
        Searches for a user in the local pod with the given user name.
      produces:
        - application/json
      parameters:
        - name: userName
          description: User login name
          in: path
          required: true
          type: string
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - Users
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/User'
        '204':
          description: 'No user found.'
        '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'
  '/v1/admin/streams/list':
    post:
      deprecated: true
      summary: |
        Retrieve all the streams across the enterprise where the membership of the stream has been modified between a given time range
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: skip
          description: |
            Number of items to skip. Default is 0.
          in: query
          type: integer
        - name: limit
          description: |
            Maximum number of items to return. Default is 50.  This value cannot exceed 100.
          in: query
          type: integer
        - name: filter
          description: Stream filtering criteria.
          in: body
          schema:
            $ref: '#/definitions/AdminStreamFilter'
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/AdminStreamList'
        '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'
  '/v1/streams/{sid}/info':
    get:
      deprecated: true
      summary: Get information about a partcular stream.
      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
      tags:
        - Streams
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/StreamAttributes'
        '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'
  '/v1/admin/user/create':
    post:
      deprecated: true
      summary: Create a new user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserCreate'
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UserDetail'
        '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/admin/user/{uid}':
    get:
      deprecated: true
      summary: Retreive user details for a particular user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UserDetail'
        '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/admin/user/{uid}/update':
    post:
      deprecated: true
      summary: Update an existing user
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: uid
          description: |
            User ID as a decimal integer
          in: path
          required: true
          type: integer
          format: int64
        - name: payload
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserAttributes'
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UserDetail'
        '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/admin/user/list':
    get:
      deprecated: true
      summary: Retreive a list of all users in the company (pod)
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
      tags:
        - User
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UserIdList'
        '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/admin/streams/{streamId}/messageIds':
    get:
      summary: Fetch message ids using timestamp.
      description: |
        Gets all message Ids that matches a given stream defined by
        a streamId in a specified time frame
      produces:
        - application/json
      parameters:
        - name: sessionToken
          description: Session authentication token.
          in: header
          required: true
          type: string
        - name: streamId
          description: The stream from which messages are going to be fetched.
          in: path
          required: true
          type: string
        - name: since
          description: |
            A timestamp in milisseconds that defines the initial time
            the search will consider when getting the messageIds.
          in: query
          required: false
          type: integer
          format: int64
        - name: to
          description: |
            A timestamp in milisseconds that defines the final time
            the search will consider when getting the messageIds.
          in: query
          required: false
          type: integer
          format: int64
        - name: limit
          description: |
            The limit of how many messageIds will be retrieved at a time.
          in: query
          required: false
          type: integer
        - name: offset
          description: |
            The pagination offset related to the messageIds search.
          in: query
          required: false
          type: integer
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/MessageIdsFromStream'
        '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: 'Not Found: Stream cannot be found.'
          schema:
            $ref: '#/definitions/Error'
        '422':
          description: 'Unprocessable Entity: Timestamp range is bigger than twenty-four hours.'
          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
  CompanyCert:
    type: object
    properties:
      pem:
        type: string
        description: An X509 certificate in PEM format
      attributes:
        $ref: '#/definitions/CompanyCertAttributes'
  CompanyCertDetail:
    type: object
    properties:
      companyCertAttributes:
        $ref: '#/definitions/CompanyCertAttributes'
      companyCertInfo:
        $ref: '#/definitions/CompanyCertInfo'
      certInfo:
        $ref: '#/definitions/CertInfo'
  CompanyCertInfoList:
    type: array
    items:
      type: object
      properties:
        companyCertAttributes:
          $ref: '#/definitions/CompanyCertAttributes'
        companyCertInfo:
          $ref: '#/definitions/CompanyCertInfo'
  CompanyCertType:
    type: object
    properties:
      type:
        type: string
        enum:
          - USERSIGNING
          - USER
          - OPERATIONSSIGNING
          - OPERATIONSUSER
  CompanyCertTypeList:
    type: array
    items:
      $ref: '#/definitions/CompanyCertType'
  CompanyCertStatus:
    type: object
    properties:
      type:
        type: string
        enum:
          - TRUSTED
          - KNOWN
          - REVOKED
          - DISABLED
  CompanyCertAttributes:
    type: object
    properties:
      name:
        type: string
        description: Friendly name assigned by administrator
      type:
        $ref: '#/definitions/CompanyCertType'
      status:
        $ref: '#/definitions/CompanyCertStatus'
  CompanyCertInfo:
    type: object
    properties:
      fingerPrint:
        type: string
        description: Unique identifier
      issuerFingerPrint:
        type: string
        description: Unique identifier of issuer cert if known
      lastSeen:
        type: integer
        format: int64
        description: Date when we last saw this certificate presented
      updatedAt:
        type: integer
        format: int64
        description: Date when this cert was last updated by administrator
      updatedBy:
        type: integer
        format: int64
        description: User ID of administrator who last updated this cert
      commonName:
        type: string
        description: The Symphony account name which this certificate authenticates
      expiryDate:
        type: integer
        format: int64
        description: Expiry date of this cert
  CertInfo:
    type: array
    items:
      $ref: '#/definitions/CertInfoItem'
  CertInfoItem:
    type: object
    properties:
      name:
        type: string
      attributes:
        type: array
        items:
          $ref: '#/definitions/NameValuePair'
  PodCertificate:
    type: object
    properties:
      certificate:
        description: Certificate in PEM format
        type: string
  NameValuePair:
    type: object
    properties:
      name:
        type: string
      value:
        type: string
  Stream:
    type: object
    properties:
      id:
        type: string
  UserError:
    description: User error information
    type: object
    properties:
      error:
        type: string
        description: 'Error code informing what is wrong'
      email:
        type: string
        description: 'Email with error. Only one of the following fields should be present: email or id'
      id:
        type: string
        description: 'Id with error. Only one of the following fields should be present: email or id'
  UserV2:
    description: User record version 2
    type: object
    properties:
      id:
        type: integer
        format: int64
      emailAddress:
        type: string
        format: email
      firstName:
        type: string
      lastName:
        type: string
      displayName:
        type: string
      title:
        type: string
      company:
        type: string
      username:
        type: string
      location:
        type : string
      accountType:
        type: string
        enum: [NORMAL, SYSTEM]
      avatars:
        # avatar urls for both original size and small size
        $ref: '#/definitions/AvatarList'
      workPhoneNumber:
        type: string
        description: 'Note: only available if the application has the extended user or contact permission'
      mobilePhoneNumber:
        type: string
        description: 'Note: only available if the application has the extended user or contact permission'
      jobFunction:
        type: string
        description: 'Note: only available if the application has the extended user or contact permission'
      department:
        type: string
        description: 'Note: only available if the application has the extended user or contact permission'
      division:
        type: string
        description: 'Note: only available if the application has the extended user or contact permission'
      roles:
        $ref: '#/definitions/StringList'
  V2UserList:
    description: List of User record version 2
    type: object
    properties:
      users:
        type: array
        items:
          $ref: '#/definitions/UserV2'
        description: 'List of all users found with the search'
      errors:
        type: array
        items:
          $ref: '#/definitions/UserError'
        description: 'List of all errors found with the informed search criteria'
  UserSearchResults:
    type: object
    properties:
      count:
        description: The total number of users which matched the search criteria.
        type: integer
        format: int64
      skip:
        description: The number of skipped results.
        type: integer
        format: int64
      limit:
        description: The number of returned results.
        type: integer
        format: int64
      searchQuery:
        # The search query that produced this result.
        $ref: '#/definitions/UserSearchQuery'
      users:
        description: A list of users which matched by the search criteria.
        type: array
        items:
          $ref: '#/definitions/UserV2'
  UserSearchFilter:
    type: object
    properties:
      title:
        type: string
        description: user's job title
      company:
        type: string
        description: company name
      location:
        type: string
        description: city of the user's job location
      marketCoverage:
        type: string
        description: geographic area the user works with
      responsibility:
        type: string
        description: user's responsibility
      function:
        type: string
        description: user's function
      instrument:
        type: string
        description: higher level instrument for the Asset Classes
  UserSearchQuery:
    type: object
    properties:
      query:
        type: string
        description: search / query term.  This can be firstname, lastname, displayname or email
      filters:
        # query filters
        $ref: '#/definitions/UserSearchFilter'
  UserNameList:
    type: array
    items:
      type: object
      $ref: '#/definitions/UserName'
  UserName:
    type: object
    properties:
      username:
        type: string
  UserIdList:
    type: array
    items:
      type: integer
      format: int64
  UserId:
    type: object
    properties:
      id:
        type: integer
        format: int64
  StringId:
    type: object
    properties:
      id:
        type: string
  RoomAttributes:
    type: object
    properties:
      name:
        type: string
        description: Room name.
      description:
        type: string
        description: Room description.
      membersCanInvite:
        type: boolean
        description: If true, any chatroom participant can add new participants. If false, only owners can add new participants.
      discoverable:
        type: boolean
        description: If true, this chatroom (name, description and messages) can be searched and listed by non-participants. If false, only participants can search this room.
  V3RoomAttributes:
    type: object
    properties:
      name:
        type: string
        description: Room name.
      keywords:
        type: array
        description: Keywords for search to use to find this room
        items:
          $ref: '#/definitions/RoomTag'
      description:
        type: string
        description: Room description.
      membersCanInvite:
        type: boolean
        description: If true, any chatroom participant can add new participants. If false, only owners can add new participants.
      discoverable:
        type: boolean
        description: If true, this chatroom (name, description and messages) can be searched and listed by non-participants. If false, only participants can search this room.
      public:
        type: boolean
        description: If true, this is a public chatroom. IF false, a private chatroom.
      readOnly:
        type: boolean
        description: If true, only stream owners can send messages.
      copyProtected:
        type: boolean
        description: If true, clients disable the clipboard copy for content in this stream.
      crossPod:
        type: boolean
        description: If true, this room is a cross pod room
      viewHistory:
        type: boolean
        description: If true, new members can view the room chat history of the room.
      multiLateralRoom:
        type: boolean
        description: If true, this is a multi lateral room where we can find users belonging to more than 2 companies.
      scheduledMeeting:
        type: boolean
        description: If true, this room is for a scheduled meeting.
      subType:
        type: string
        description: Possible value EMAIL (indicate this room will be used for Email Integration)

  RoomSearchCriteria:
    description: Room Query Object. Used to specify the parameters for room search.
    properties:
      query:
        description: The search query. Matches the room name and description.
        type: string
      labels:
        description: A list of room tag labels whose values will be queried.
        type: array
        items:
          type: string
      active:
        description: Restrict the search to active/inactive rooms. If unspecified, search all rooms.
        type: boolean
      private:
        description: Restrict the search to private rooms. If unspecified, search all rooms.
        type: boolean
      owner:
        # Restrict the search to rooms owned by the specified user ID.
        $ref: '#/definitions/UserId'
      creator:
        # Restrict the search to rooms created by the specified user ID.
        $ref: '#/definitions/UserId'
      member:
        # Restrict the search to rooms having the specified user ID as member.
        $ref: '#/definitions/UserId'
      sortOrder:
        description: |
          Sort algorithm to be used. Supports two values: "BASIC" (legacy algorithm)
          and "RELEVANCE" (enhanced algorithm).
        type: string
        enum:
          - BASIC
          - RELEVANCE
    required:
      - query
  V2RoomSearchCriteria:
    description: Room Query Object. Used to specify the parameters for room search.
    allOf:
      - $ref: '#/definitions/RoomSearchCriteria'
      - type: object
        properties:
          subType:
            description: "Restrict the search to the specific room subtype. Valid values are: EMAIL"
            type: string
  V3RoomSearchResults:
    description: A list of search results and counts per search parameter.
    properties:
      count:
        description: The total number of rooms matched by the search.
        type: integer
        format: int64
      skip:
        description: The number of skipped results.
        type: integer
      limit:
        description: The number of returned results.
        type: integer
      query:
        # The search query that produced this result.
        $ref: '#/definitions/V2RoomSearchCriteria'
      rooms:
        description: A list of rooms matched by the query.
        type: array
        items:
          $ref: '#/definitions/V3RoomDetail'
      facetedMatchCount:
        description: Detailed counts of matched rooms per search criterion.
        type: array
        items:
          $ref: '#/definitions/FacetedMatchCount'
  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
  FacetedMatchCount:
    description: An object respresenting the result count of faceted search.
    properties:
      facet:
        description: The matched query.
        type: string
      count:
        description: The result count.
        type: integer
  RoomSystemInfo:
    type: object
    properties:
      id:
        type: string
      creationDate:
        type: integer
        format: int64
        description: The datetime when the stream was originally created. Milliseconds since Jan 1 1970.
      createdByUserId:
        type: integer
        format: int64
      active:
        type: boolean
        description: If false, no messages can be sent in this stream, and membership is locked.
  ImmutableRoomAttributes:
    type: object
    description: These attributes cannot be changed once the room has been created
    properties:
      public:
        type: boolean
        description: If true, this is a public chatroom. IF false, a private chatroom.
      readOnly:
        type: boolean
        description: If true, only stream owners can send messages.
      copyProtected:
        type: boolean
        description: If true, clients disable the clipboard copy for content in this stream.
  RoomDetail:
    type: object
    properties:
      roomAttributes:
        $ref: '#/definitions/RoomAttributes'
      roomSystemInfo:
        $ref: '#/definitions/RoomSystemInfo'
      immutableRoomAttributes:
        $ref: '#/definitions/ImmutableRoomAttributes'
  V3RoomDetail:
    type: object
    properties:
      roomAttributes:
        $ref: '#/definitions/V3RoomAttributes'
      roomSystemInfo:
        $ref: '#/definitions/RoomSystemInfo'
  SuccessResponse:
    type: object
    properties:
      format:
        type: string
        enum:
          - TEXT
          - XML
      message:
        type: string
  AvatarUpdate:
    type: object
    properties:
      image:
        description: Base64 encoded image. Original image must be less than 2MB.
        type: string
  Avatar:
    type: object
    properties:
      size:
        description: 'The Avatar Size'
        type: string
      url:
        description: 'Url of the image'
        type: string
  AvatarList:
    type: array
    items:
      $ref: '#/definitions/Avatar'
  UserStatus:
    type: object
    properties:
      status:
        type: string
        enum:
          - ENABLED
          - DISABLED
  UserFilter:
    type: object
    properties:
      role:
        type: string
        format: long
      feature:
        type: string
      status:
        type: string
        enum:
          - ENABLED
          - DISABLED
  PasswordReset:
    type: object
    properties:
      type:
        type: string
        enum:
          - EMAIL
  FeatureList:
    type: array
    items:
      $ref: '#/definitions/Feature'
  Feature:
    description: Entitlement feature record.
    type: object
    properties:
      entitlment:
        type: string
      enabled:
        type: boolean
        description: Whether this entitlement is enabled for the user.
  Group:
    description: Information Barrier Group record.
    type: object
    properties:
      id:
        type: string
      name:
        type: string
      active:
        type: boolean
      memberCount:
        type: integer
        format: int32
      policies:
        type: array
        items:
          type: string
      createdDate:
        type: integer
        format: int64
      modifiedDate:
        type: integer
        format: int64
  Product:
    description: Application Product
    type: object
    required:
      - name
      - sku
      - type
      - subscribed
    properties:
      appId:
        type: string
        description: App ID for the Product
      name:
        type: string
        minLength: 1
        maxLength: 50
        description: Product Name
      sku:
        type: string
        minLength: 1
        maxLength: 100
        description: Product SKU
      subscribed:
        type: boolean
        description: indicate whether the product is subscribed or not
      type:
        type: string
        description: Product Type (default or premium)
  ProductList:
    type: array
    items:
      $ref: '#/definitions/Product'
  PolicyList:
    type: array
    items:
      $ref: '#/definitions/Policy'
  Policy:
    description: Information Barrier Policy record.
    type: object
    properties:
      id:
        type: string
      policyType:
        type: string
        enum:
          - BLOCK
          - ALLOW
      active:
        type: boolean
      memberCount:
        type: integer
        format: int32
      groups:
        type: array
        items:
          type: string
      createdDate:
        type: integer
        format: int64
      modifiedDate:
        type: integer
        format: int64
  UserAppEntitlement:
    description: Application Entitlements for the user
    type: object
    required:
      - appId
      - listed
      - install
    properties:
      appId:
        type: string
        description: Unique ID for the Application
        maxLength: 32
        minLength: 1
      appName:
        type: string
        description: Name for this Application
        maxLength: 50
        minLength: 1
      listed:
        type: boolean
        description: if true, this application will be listed in the appstore for this user.  Otherwise, this application will be hidden in the appstore.
      install:
        type: boolean
        description: if true, it indicate this application is installed for this user.  Otherwise, this user does not have this application installed.
      products:
        $ref: '#/definitions/ProductList'
  PodAppEntitlement:
    description: Application Entitlements for the company
    type: object
    required:
      - appId
      - appName
      - enable
      - listed
      - install
    properties:
      appId:
        type: string
        description: Unique ID for the Application
        maxLength: 32
        minLength: 1
      appName:
        type: string
        description: Name for this Application
        maxLength: 50
        minLength: 1
      enable:
        type: boolean
      listed:
        type: boolean
        description: if true, this application will be listed in the appstore for everyone.  Otherwise, this application will be hidden in the appstore.
      install:
        type: boolean
        description: if true, the entitlement is set to automatic for the company.  Otherwise, it is set to manual.
  Role:
    description: Role record.
    type: object
    properties:
      id:
        type: string
        format: long
      name:
        type: string
      description:
        type: string
  RoleDetailList:
    type: array
    items:
      $ref: '#/definitions/RoleDetail'
  RoleDetail:
    description: Role detailed.
    type: object
    properties:
      id:
        type: string
        format: long
      name:
        type: string
      userTypes:
        type: array
        items:
          type: string
      optionalActions:
        type: array
        items:
          type: string
  GroupList:
    type: array
    items:
      $ref: '#/definitions/Group'
  UserAppEntitlementList:
    type: array
    items:
      $ref: '#/definitions/UserAppEntitlement'
  PodAppEntitlementList:
    type: array
    items:
      $ref: '#/definitions/PodAppEntitlement'
  RoleList:
    type: array
    items:
      $ref: '#/definitions/Role'
  IntegerList:
    type: array
    items:
      type: integer
      format: int64
  StringList:
    type: array
    items:
      type: string
  DisclaimerList:
    type: array
    items:
      $ref: '#/definitions/Disclaimer'
  Disclaimer:
    type: object
    properties:
      id:
        type: string
      name:
        type: string
      content:
        type: string
      frequencyInHours:
        type: integer
        format: int32
      isDefault:
        type: boolean
      isActive:
        type: boolean
      createdDate:
        type: integer
        format: int64
      modifiedDate:
        type: integer
        format: int64
      format:
        type: string
        enum:
          - TEXT
          - XML
  DelegateAction:
    type: object
    properties:
      userId:
        type: integer
        format: int64
      action:
        type: string
        enum:
          - ADD
          - REMOVE
  UserInfo:
    description: User record.
    type: object
    properties:
      user:
        $ref: '#/definitions/UserAttributes'
      userSystemInfo:
        $ref: '#/definitions/UserSystemInfo'
  UserAttributes:
    description: User record.
    type: object
    properties:
      emailAddress:
        type: string
      firstName:
        type: string
      lastName:
        type: string
      userName:
        type: string
      displayName:
        type: string
      companyName:
        type: string
      department:
        type: string
      division:
        type: string
      title:
        type: string
      workPhoneNumber:
        type: string
      mobilePhoneNumber:
        type: string
      smsNumber:
        type: string
      accountType:
        type: string
        enum:
          - NORMAL
          - SYSTEM
      location:
        type: string
      jobFunction:
        type: string
      assetClasses:
        type: array
        items:
          type: string
      industries:
        type: array
        items:
          type: string
  V2UserDetail:
    description: V2 Detailed User record.
    type: object
    properties:
      userAttributes:
        $ref: '#/definitions/V2UserAttributes'
      userSystemInfo:
        $ref: '#/definitions/UserSystemInfo'
      features:
        $ref: '#/definitions/IntegerList'
      apps:
        $ref: '#/definitions/IntegerList'
      groups:
        $ref: '#/definitions/IntegerList'
      roles:
        $ref: '#/definitions/StringList'
      disclaimers:
        $ref: '#/definitions/IntegerList'
      avatar:
        $ref: '#/definitions/Avatar'
  V2UserAttributes:
    description: V2 User record.
    type: object
    properties:
      emailAddress:
        type: string
      firstName:
        type: string
      lastName:
        type: string
      userName:
        type: string
      displayName:
        type: string
      companyName:
        type: string
      department:
        type: string
      division:
        type: string
      title:
        type: string
      workPhoneNumber:
        type: string
      mobilePhoneNumber:
        type: string
      twoFactorAuthPhone:
        type: string
      smsNumber:
        type: string
      accountType:
        type: string
        enum:
          - NORMAL
          - SYSTEM
      location:
        type: string
      recommendedLanguage:
        type: string
      jobFunction:
        type: string
      assetClasses:
        type: array
        items:
          type: string
      industries:
        type: array
        items:
          type: string
      marketCoverage:
        type: array
        items:
          type: string
      responsibility:
        type: array
        items:
          type: string
      function:
        type: array
        items:
          type: string
      instrument:
        type: array
        items:
          type: string
      currentKey:
        $ref: '#/definitions/V2UserKeyRequest'
      previousKey:
        $ref: '#/definitions/V2UserKeyRequest'
  V2UserKeyRequest:
    description: User RSA key information.
    type: object
    properties:
      key:
        description: User RSA public key.
        type: string
      expirationDate:
        description: RSA key expiration date. This value is set just for rotated keys.
        type: integer
        format: int64
      action:
        description: |
          Action to be performed on the RSA key.
          The following actions can be performed onto the user's active RSA key:
            - SAVE
            - REVOKE
          The following actions can be performed onto the user's rotated RSA key:
            - REVOKE
            - EXTEND
        type: string
  V2UserCreate:
    description: |
      V2 User Creation Object.
      After creation, modify roles, features etc via the specific API calls.
    type: object
    properties:
      userAttributes:
        $ref: '#/definitions/V2UserAttributes'
      password:
        $ref: '#/definitions/Password'
      roles:
        type: array
        items:
          type: string
  V2UserDetailList:
    type: array
    items:
      $ref: '#/definitions/V2UserDetail'
  UserSystemInfo:
    description: User Status Information.
    type: object
    properties:
      id:
        type: integer
        format: int64
      status:
        type: string
        enum:
          - ENABLED
          - DISABLED
      createdDate:
        type: integer
        format: int64
      createdBy:
        type: string
      lastUpdatedDate:
        type: integer
        format: int64
      lastLoginDate:
        type: integer
        format: int64
      lastPasswordReset:
        type: integer
        format: int64
      deactivatedDate:
        type: integer
        format: int64
  UserDetailList:
    type: array
    items:
      $ref: '#/definitions/UserDetail'
  UserDetail:
    description: Detailed User record.
    type: object
    properties:
      userAttributes:
        $ref: '#/definitions/UserAttributes'
      userSystemInfo:
        $ref: '#/definitions/UserSystemInfo'
      features:
        $ref: '#/definitions/IntegerList'
      apps:
        $ref: '#/definitions/IntegerList'
      groups:
        $ref: '#/definitions/IntegerList'
      roles:
        $ref: '#/definitions/StringList'
      disclaimers:
        $ref: '#/definitions/IntegerList'
      avatar:
        $ref: '#/definitions/Avatar'
  Password:
    description: Password. Stored as derived password in both the Pod and the Key Manager using PBKDF2 function. Number of iterations should be 10000 and desired length 256 bits.
    type: object
    properties:
      hSalt:
        description: Pod password salt used for PBKDF2 derivation.
        type: string
      hPassword:
        description: Pod password derived with PBKDF2.
        type: string
      khSalt:
        description: Key Manager password salt used for PBKDF2 derivation.
        type: string
      khPassword:
        description: Key Manager password derived with PBKDF2.
        type: string
  MemberInfo:
    description: Detailed membership record.
    type: object
    properties:
      id:
        type: integer
        format: int64
      owner:
        type: boolean
      joinDate:
        type: integer
        format: int64
  MembershipList:
    description: List of members in a room.
    type: array
    items:
      $ref: '#/definitions/MemberInfo'
  V2MemberUserDetail:
    description: User detail information for stream membership
    type: object
    properties:
      userId:
        type: integer
        format: int64
      email:
        type: string
      firstName:
        type: string
      lastName:
        type: string
      displayName:
        type: string
        description: Display name for the user
      company:
        type: string
        description: Company name
      companyId:
        type: integer
        description: Company ID
      isExternal:
        type: boolean
        description: true indicate that this user belong to another company
  V2MemberInfo:
    description: Detailed membership record.
    type: object
    properties:
      user:
        # User detail information include names, userId, email, etc
        $ref: '#/definitions/V2MemberUserDetail'
      isOwner:
        type: boolean
        description: true if this is an owner of the room
      isCreator:
        type: boolean
        description: true if this is the creator of the room
      joinDate:
        description: unix timestamp for join date
        type: integer
        format: int64
  V2MemberInfoList:
    type: array
    items:
      $ref: '#/definitions/V2MemberInfo'
  V2MembershipList:
    description: List of members in the stream.
    type: object
    properties:
      count:
        type: integer
        description: total members count
      skip:
        type: integer
        description: number of items to skip from the request
      limit:
        type: integer
        description: maximum number of items to return
      members:
        $ref: '#/definitions/V2MemberInfoList'
  MessageSuppressionResponse:
    description: The suppression state of a message
    type: object
    properties:
      messageId:
        type: string
      suppressed:
        type: boolean
      suppressionDate:
        type: integer
        format: int64
        description: The date when this message was suppressed.
  BulkActionResult:
    description: |
      The results of list based bulk action. The list contains the result messages
      in the same order as submitted. The message will be an empty string if the action
      was successful for item in that index.
    properties:
      overallResult:
        type: string
        enum:
          - SUCCESS
          - FAIL
      results:
        type: array
        items:
          type: string
  UserConnectionRequest:
    type: object
    description: Request body for the Connection APIs
    properties:
      userId:
        type: integer
        format: int64
        description: user id
  UserConnection:
    type: object
    description: Connection status between two users
    properties:
      userId:
        type: integer
        format: int64
        description: user id
      status:
        type: string
        description: Connection status between the requesting user and the request sender
        enum:
          - PENDING_INCOMING
          - PENDING_OUTGOING
          - ACCEPTED
          - REJECTED
      firstRequestedAt:
        type: integer
        format: int64
        description: unix timestamp when the first request was made
      updatedAt:
        type: integer
        format: int64
        description: unix timestamp on the last updated date
      requestCounter:
        type: integer
        format: int32
        description: number of requests made
  UserConnectionList:
    type: array
    items:
      $ref: '#/definitions/UserConnection'
  StreamList:
    description: A list of streams of which the requesting user is a member.
    type: array
    items:
      $ref: '#/definitions/StreamAttributes'
  StreamAttributes:
    type: object
    properties:
      id:
        type: string
        description: The stream ID.
      crossPod:
        type: boolean
        description: If true, this is a cross-pod stream.
      active:
        type: boolean
        description: If true, this stream is active.
      streamType:
        # The type of the stream (IM, multi-IM, chat room, user wall).
        $ref: '#/definitions/StreamType'
      streamAttributes:
        # Additional stream details applicable to IMs, MIMs and user walls.
        $ref: '#/definitions/ConversationSpecificStreamAttributes'
      roomAttributes:
        # Additional stream details applicable to chatrooms.
        $ref: '#/definitions/RoomSpecificStreamAttributes'
  StreamType:
    type: object
    properties:
      type:
        type: string
        enum:
          - IM
          - MIM
          - ROOM
          - POST
  ConversationSpecificStreamAttributes:
    type: object
    properties:
      members:
        # User IDs of the participants of the stream.
        $ref: '#/definitions/UserIdList'
  RoomSpecificStreamAttributes:
    type: object
    properties:
      name:
        type: string
        description: Room name.
  StreamFilter:
    description: Stream filtering parameters.
    properties:
      streamTypes:
        description: Types of streams to search for.
        type: array
        items:
          $ref: '#/definitions/StreamType'
      includeInactiveStreams:
        description: Whether to include inactive streams in the list of results.
        type: boolean
  V2StreamAttributes:
    type: object
    properties:
      id:
        type: string
        description: The stream ID.
      crossPod:
        type: boolean
        description: If true, this is a cross-pod stream.
      origin:
        type: string
        description: INTERNAL if the creator of this stream belongs to the pod, EXTERNAL otherwise
      active:
        type: boolean
        description: If true, this stream is active.
      lastMessageDate:
        type: integer
        format: int64
        description: unix timestamp of the last message sent in the stream
      streamType:
        description: The type of the stream (IM = IM, multi-IM = MIM, chat room = ROOM, user wall = POST).
        $ref: '#/definitions/V2StreamType'
      streamAttributes:
        # Additional stream details applicable to IMs, MIMs and user walls.
        $ref: '#/definitions/V2ConversationSpecificStreamAttributes'
      roomAttributes:
        # Additional stream details applicable to chatrooms.
        $ref: '#/definitions/V2RoomSpecificStreamAttributes'
  V2StreamType:
    type: object
    properties:
      type:
        type: string
  V2ConversationSpecificStreamAttributes:
    type: object
    properties:
      members:
        # User IDs of the participants of the stream.
        $ref: '#/definitions/UserIdList'
  V2RoomSpecificStreamAttributes:
    type: object
    properties:
      name:
        type: string
        description: Room name.
  V2AdminStreamFilter:
    description: stream filter criteria
    type: object
    properties:
      streamTypes:
        description: type of streams to search for
        type: array
        items:
          description: Valid values are IM, MIM or ROOM
          $ref: '#/definitions/V2AdminStreamType'
      scope:
        description: |
          Scope of the room. Valid values are INTERNAL or EXTERNAL.
          If not specified, it will include both Internal and External scope
        type: string
      origin:
        description: |
          Origin of the room. It indicates whether the room was created by a user within the company by another company.
          Valid values are INTERNAL or EXTERNAL.
          If not specified, it will include both Internal and External origin
        type: string
      status:
        description: |
          Status of the room.
          Valid values are ACTIVE or INACTIVE.
          If not specified, it will include both Active and Inactive status
        type: string
      privacy:
        description: |
          Privacy setting of the stream.
          Valid values are PUBLIC or PRIVATE.
          If not specified, it will include both public and private streams
        type: string
      startDate:
        description: Start date in unix timestamp in millseconds
        type: integer
        format: int64
      endDate:
        description: End date in unix timestamp in millseconds.  If not specified, it assume to be current time.
        type: integer
        format: int64
  V2AdminStreamType:
    type: object
    properties:
      type:
        type: string
  AdminJustifiedUserAction:
    type: object
    properties:
      userId:
        description: The userId of the target user.
        type: integer
        format: int64
      justification:
        description: The reason for the requested action.
        type: string
  AdminJustifiedAction:
    type: object
    properties:
      justification:
        description: The reason for the requested action.
        type: string
  MessageStatusUser:
    type: object
    properties:
      userId:
        type: string
      firstName:
        type: string
      lastName:
        type: string
      displayName:
        type: string
      email:
        type: string
      userName:
        type: string
      timestamp:
        type: string
  MessageStatus:
    description: |
      Holds the status of a particular message, indicating which user the message has been sent, delivered or read.
    type: object
    properties:
      author:
        description: User who has sent the message.
        type: object
        $ref: '#/definitions/MessageStatusUser'
      read:
        description: All users who have read that message, in any Symphony client.
        type: array
        items:
          $ref: '#/definitions/MessageStatusUser'
      delivered:
        description: |
          All users who have at least one Symphony client to which the message has been delivered, and not read yet.
        type: array
        items:
          $ref: '#/definitions/MessageStatusUser'
      sent:
        description: |
          All users to whom the message has been sent and received by the Symphony system,
          but not yet delivered to any user's Symphony client.
        type: array
        items:
          $ref: '#/definitions/MessageStatusUser'
  ApplicationInfo:
    description: |
      Required information for creating an application.
    type: object
    properties:
      appId:
        description: An unique id for the application.
        type: string
      name:
        description: User defined name for the application.
        type: string
      appUrl:
        description: The url for the app. Must start with "https://".
        type: string
      domain:
        description: Domain for app, that must match app url domain.
        type: string
      publisher:
        description: The publisher for this application.
        type: string
  ApplicationDetail:
    description: Detailed record of application.
    type: object
    properties:
      applicationInfo:
        # Required info for the creation of an application.
        $ref: '#/definitions/ApplicationInfo'
      iconUrl:
        description: Url to a icon to use for app. Must start with "https://".
        type: string
      description:
        description: Description of the application.
        type: string
      allowOrigins:
        description: |
          The permitted domains to send or receive a request from.
          The field is for the purpose of CORS which set the app specific "ALLOW-ORIGIN-DOMAINS" header in HTTP.
        type: string
      permissions:
        description: |
          List of application permissions provisioned for the application
          Accepted values:
            - SEND_MESSAGES
            - GET_USER_CONNECTIONS
            - REQUEST_USER_CONNECTIONS
            - SET_PRESENCE
            - GET_PRESENCE
            - GET_BASIC_USER_INFO
            - GET_EXTENDED_USER_INFO
            - GET_BASIC_CONTACT_INFO
            - GET_EXTENDED_CONTACT_INFO
            - ACT_AS_USER
        type: array
        items:
          type: string
      cert:
        description: The app public certificate in pem format.
        type: string
      authenticationKeys:
        $ref: '#/definitions/AppAuthenticationKeys'
      notification:
        $ref: '#/definitions/AppNotification'
  V2PresenceList:
    type: array
    items:
      $ref: '#/definitions/V2Presence'
  V2Presence:
    allOf:
      - $ref: '#/definitions/V2UserPresence'
      - type: object
        properties:
          timestamp:
            type: integer
            format: int64
            description: The time, in milliseconds since Jan 1 1970, when the presence state was set.
  V2UserPresence:
    allOf:
      - $ref: '#/definitions/V2PresenceStatus'
      - type: object
        properties:
          userId:
            type: integer
            format: int64
            description: The ID of the user to whom the presence state relates.
  V2PresenceStatus:
    type: object
    properties:
      category:
        type: string
        description: |
          Presence status. Possible values are:
            - UNDEFINED
            - AVAILABLE
            - BUSY
            - DO_NOT_DISTURB
            - ON_THE_PHONE
            - BE_RIGHT_BACK
            - IN_A_MEETING
            - AWAY
            - OUT_OF_OFFICE
            - OFF_WORK
            - OFFLINE
    required:
      - category
  V2AdminStreamList:
    description: list of streams info
    type: object
    properties:
      count:
        type: integer
        format: int64
        description: total number of streams which match the filter criteria
      skip:
        type: integer
        description: number of streams skipped
      limit:
        type: integer
        description: maximum number of streams return
      filter:
        # filter criteria used in the request
        $ref: '#/definitions/V2AdminStreamFilter'
      streams:
        # list of streams
        $ref: '#/definitions/V2AdminStreamInfoList'
  V2AdminStreamInfoList:
    type: array
    description: list of stream info
    items:
      $ref: '#/definitions/V2AdminStreamInfo'
  V2AdminStreamInfo:
    description: Stream information
    type: object
    properties:
      id:
        type: string
        description: stream id
      isExternal:
        type: boolean
        description: true indicate this stream has the scope of external and false indictate this stream has the scope of internal. Deprecated, use origin
      isActive:
        type: boolean
        description: true indicate that this stream has the status of active and false indicate this stream has the scope of inactive
      isPublic:
        type: boolean
        description: true indicate that this stream has a privacy setting of public.  This only apply a ROOM stream type.
      type:
        type: string
        description: type of stream (IM, MIM, ROOM)
      crossPod:
        type: boolean
        description: If true, this is a cross-pod stream.
      origin:
        type: string
        description: INTERNAL if the creator of this stream belongs to the pod, EXTERNAL otherwise
      attributes:
        # additional optional properties of the stream
        $ref: '#/definitions/V2AdminStreamAttributes'
  V2AdminStreamAttributes:
    description: additional optional properties for the stream
    type: object
    properties:
      roomName:
        type: string
        description: room name (room only)
      roomDescription:
        type: string
        description: description of the room (room only)
      members:
        type: array
        description: list of userid who is member of the stream - im or mim only
        items:
          type: integer
          format: int64
      createdByUserId:
        type: integer
        format: int64
        description: creator user id
      createdDate:
        type: integer
        format: int64
        description: created date
      lastModifiedDate:
        type: integer
        format: int64
        description: last modified date
      originCompany:
        type: string
        description: company name of the creator
      originCompanyId:
        type: integer
        description: company id of the creator
      membersCount:
        type: integer
        description: total number of members in the stream
      lastMessageDate:
        type: integer
        format: int64
        description: last date a message was sent in this stream
  FileExtension:
    type: object
    required:
      - extension
    properties:
      extension:
        type: string
        description: |
          The file extension that this specific record is for.  This is a unique ID
          that allows this record to be referenced in the URI.
        example: ".txt"
      scope_internal:
        type: boolean
        description: |
          File extension allowed for internal scope
      scope_external:
        type: boolean
        description: |
          File extension allowed for external scope
      source:
        type: string
        description: |
          File extension with metadata understood by the system or file extension created by a customer
        enum:
          - "SYSTEM"
          - "CUSTOMER"
  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"
  FileExtensionsResponse:
    type: object
    required:
      - data
      - paging
    properties:
      data:
        type: array
        items:
          $ref: "#/definitions/FileExtension"
  Protocol:
    type: object
    required:
      - scheme
    properties:
      scheme:
        type: string
        description: "URI protocol scheme (example: http, https, ftp)"
  AppAuthenticationKeys:
    description: App RSA keys information.
    type: object
    properties:
      current:
        $ref: "#/definitions/AppAuthenticationKey"
      previous:
        $ref: "#/definitions/AppAuthenticationKey"
  AppAuthenticationKey:
    description: App RSA key information.
    type: object
    properties:
      key:
        description: Application RSA public key.
        type: string
      expirationDate:
        description: RSA key expiration date. This value is set just for rotated keys.
        type: integer
        format: int64
      action:
        description: |
          Action to be performed on the RSA key.
          The following actions can be performed onto the app's active RSA key:
            - SAVE
            - REVOKE
          The following actions can be performed onto the app's rotated RSA key:
            - REVOKE
            - EXTEND
        type: string
  AppNotification:
    type: object
    description: Application callback information
    properties:
      url:
        type: string
        description: "callback URL"
      apiKey:
        type: string
        description: "apiKey sent into every callback request, using the X-API-KEY header"
  StreamAttachmentResponse:
    type: array
    items:
      $ref: "#/definitions/StreamAttachmentItem"
  StreamAttachmentItem:
    description: File attachments for a message in a stream
    type: object
    properties:
      messageId:
        type: string
      ingestionDate:
        type: integer
        format: int64
      userId:
        type: integer
        format: int64
      fileId:
        type: string
        description: The attachment File ID.
      name:
        type: string
        description: The file name.
      size:
        type: integer
        format: int64
        description: Size in bytes.
      content-type:
        type: string
      previews:
        type: array
        items:
          $ref: "#/definitions/AttachmentPreview"
  AttachmentPreview:
    description: Preview file for image attachments
    type: object
    properties:
      fileId:
        type: string
        description: The preview file ID
      width:
        type: integer
        description: The preview image width
  UserGroupCreate:
    description: Body for group creation
    type: object
    properties:
      name:
        description: Group name
        type: string
      area:
        description: Group area
        type: string
      description:
        description: Group description
        type: string
      type:
        description: Group type
        type: string
    required:
      - name
      - type
  UserGroupResponse:
    description: Group object response
    type: object
    properties:
      id:
        description: Group ID
        type: string
      name:
        description: Group name
        type: string
      area:
        description: An optional string attribute used for categorizing groups
        type: string
      description:
        description: Group description
        type: string
      type:
        description: Group type
        type: string
      active:
        description: Group status
        type: boolean
      createdDate:
        description: Date of group creation
        type: integer
        format: int64
      modifiedDate:
        description: Date of group last update
        type: integer
        format: int64
      memberCount:
        description: Number of group members
        type: integer
        format: int64
      assigneeCount:
        description: Number of group assignees
        type: integer
        format: int64
  UserGroupResponseList:
    type: object
    properties:
      data:
        type: array
        items:
          $ref: '#/definitions/UserGroupResponse'
      pagination:
        type: object
        $ref: "#/definitions/Pagination"
  UserGroupUpdate:
    description: Body for group update
    type: object
    properties:
      name:
        description: Group name
        type: string
      area:
        description: Group area
        type: string
      description:
        description: Group description
        type: string
      active:
        description: Group status
        type: boolean
  UserGroupMembershipResponseData:
    description: User object response
    type: object
    properties:
      id:
        type: string
      groupId:
        type: string
      group:
        type: object
        $ref: '#/definitions/GroupRoleScope'
      userId:
        type: integer
        format: int64
      user:
        type: object
        $ref: '#/definitions/UserCompp'
      active:
        type: boolean
      lastAddedDate:
        type: integer
        format: int64
      lastRemovedDate:
        type: integer
        format: int64
  GroupRoleScope:
    description: User Group info to include in other models
    type: object
    properties:
      id:
        type: string
        description: Group ID
      name:
        type: string
        description: Group name
      area:
        type: string
        description: An optional string attribute used for categorizing groups
      type:
        type: string
        description: Group type
      active:
        type: boolean
        description: Group status
  UserCompp:
    description: Basic user information to include in other models
    type: object
    properties:
      id:
        type: integer
        format: int64
        description: User ID
      username:
        type: string
        description: Username
      firstName:
        type: string
        description: User first name
      lastName:
        type: string
        description: User last name
      emailAddress:
        type: string
        description: User email addressIntegrationUserManagerTest
  UserGroupMembershipRequest:
    description: Body for user group membership creation
    type: object
    properties:
      active:
        type: boolean
  UserGroupMembershipData:
    description: Body for user group membership response
    type: object
    properties:
      id:
        type: string
      groupId:
        type: string
      userId:
        type: integer
        format: int64
      group:
        type: object
        $ref: "#/definitions/UserGroupData"
      user:
        type: object
        $ref: "#/definitions/MembershipData"
      active:
        type: boolean
      lastAddedDate:
        type: integer
        format: int64
      lastRemovedDate:
        type: integer
        format: int64
  MembershipData:
    description: User object response
    type: object
    properties:
      id:
        type: integer
        format: int64
      userName:
        type: string
      firstName:
        type: string
      lastName:
        type: string
      emailAddress:
        type: string
  UserGroupData:
    description: Group object response
    type: object
    properties:
      id:
        description: Group Id
        type: string
      name:
        description: Group name
        type: string
      area:
        description: Group area
        type: string
      type:
        description: Group type
        type: string
      active:
        description: Group Status
        type: boolean
  UserGroupMembershipResponse:
    type: object
    properties:
      data:
        type: array
        items:
          $ref: '#/definitions/UserGroupMembershipResponseData'
      pagination:
        type: object
        $ref: "#/definitions/Pagination"
  UserGroupAssignee:
    description: User group assignee object
    type: object
    properties:
      id:
        description: Assignee id
        type: string
      groupId:
        type: string
      group:
        description: Group
        type: object
        $ref: '#/definitions/GroupRoleScope'
      userId:
        type: integer
        format: int64
      user:
        type: object
        $ref: '#/definitions/UserCompp'
      userRoles:
        type: array
        items:
          type: string
      active:
        type: boolean
      lastAddedDate:
        description: Last added
        type: integer
        format: int64
      lastRemovedDate:
        description: Last removed
        type: integer
        format: int64
  UserData:
    description: User object response
    type: object
    properties:
      id:
        type: integer
        format: int64
      username:
        type: string
      firstName:
        type: string
      lastName:
        type: string
      emailAddress:
        type: string
  UserGroupAssigneeResponse:
    description: response
    type: object
    properties:
      data:
        type: array
        items:
          $ref: '#/definitions/UserGroupAssignee'
      pagination:
        type: object
        $ref: '#/definitions/Pagination'
  UserGroupAssigneeUpdate:
    description: Body for user group assignee update
    type: object
    properties:
      current:
        description: Assignee status
        type: boolean
    required:
      - current
  UserGroupMembershipUpdate:
    description: User Group membership update object
    type: object
    properties:
      active:
        description: Group membership status
        type: boolean
  UserGroupAssignmentResponse:
    description: User Group assignment response object
    type: object
    properties:
      id:
        type: string
        description: Assignment ID
      groupId:
        type: string
        description: Group ID
      group:
        type: object
        $ref: '#/definitions/GroupRoleScope'
      userId:
        type: integer
        format: int64
        description: User ID
      user:
        type: object
        $ref: '#/definitions/UserCompp'
      userRoles:
        type: array
        items:
          type: string
      active:
        type: boolean
        description: Group membership status
      lastAddedDate:
        type: integer
        format: int64
        description: Date of group membership last added
      lastRemovedDate:
        type: integer
        format: int64
        description: Date of group membership last removed
  DownloadReceiptCount:
    type: object
    properties:
      fileName:
        type: string
      timestamp:
        type: integer
        format: int64
  MessageReceiptDetail:
    description: Message receipt details response object
    type: object
    properties:
      user:
        $ref: '#/definitions/UserCompp'
      deliveryReceiptTimestamp:
        description: Timestamp of message delivery receipts
        type: integer
        format: int64
      readReceiptTimestamp:
        description: Timestamp of message read receipts
        type: integer
        format: int64
      emailNotificationTimestamp:
        description: Timestamp of message email notifications
        type: integer
        format: int64
      downloadReceiptCounts:
        type: array
        items:
          $ref: '#/definitions/DownloadReceiptCount'
  MessageReceiptDetailResponse:
    description: List of Message receipt details
    type: object
    properties:
      creator:
        $ref: '#/definitions/MessageUser'
      onBehalfOfUser:
        $ref: '#/definitions/MessageUser'
      stream:
        $ref: '#/definitions/MessageStream'
      creationDate:
        type: integer
        format: int64
      deliveryReceiptCount:
        type: integer
      readReceiptCount:
        type: integer
      emailNotificationCount:
        type: integer
      downloadReceiptCounts:
        type: array
        items:
          $ref: '#/definitions/MessageDownloadReceiptCount'
      MessageReceiptDetail:
        type: array
        items:
          $ref: '#/definitions/MessageReceiptDetail'
      pagination:
        $ref: "#/definitions/Pagination"
  MessageUser:
    type: object
    properties:
      id:
        type: integer
        format: int64
      name:
        type: string
  MessageStream:
    type: object
    properties:
      id:
        type: string
      name:
        type: string
      streamType:
        type: string
  MessageDownloadReceiptCount:
    type: object
    properties:
      fileName:
        type: string
      count:
        type: integer
        format: int64
  MessageDetail:
    description: Message detail
    type: object
    properties:
      messageId:
        description: message id
        type: string
      creator:
        $ref: '#/definitions/MessageUser'
      onBehalfOfUser:
        $ref: '#/definitions/MessageUser'
      stream:
        $ref: '#/definitions/MessageStream'
      creationDate:
        type: integer
        format: int64
      deliveryReceiptCount:
        type: integer
        format: int64
      readReceiptCount:
        type: integer
        format: int64
      emailNotificationCount:
        type: integer
        format: int64
      downloadReceiptCounts:
        type: array
        items:
          $ref: '#/definitions/MessageDownloadReceiptCount'
  MessageDetails:
    description: Message details
    type: array
    items:
      $ref: '#/definitions/MessageDetail'
  MessageIds:
    type: object
    properties:
      messageIds:
        $ref: '#/definitions/StringList'
  AssigneeCandidate:
    description: Assignee Candidate
    type: object
    properties:
      userId:
        type: integer
        format: int64
      username:
        type: string
      firstName:
        type: string
      surname:
        type: string
      emailAddress:
        type: string
      canBeAssigned:
        type: boolean
      roles:
        $ref: '#/definitions/StringList'
  AssigneeCandidates:
    description: List of assignee candidate
    type: object
    properties:
      users:
        type: array
        items:
          $ref: '#/definitions/AssigneeCandidate'
      pagination:
        type: object
        $ref: "#/definitions/Pagination"
  Languages:
    description: List of languages
    type: object
    properties:
      languages:
        $ref: "#/definitions/StringList"
  MessageMetadataResponse:
    description: Message metadata
    type: object
    properties:
      messageId:
        type: string
      parent:
        type: object
        properties:
          messageId:
            type: string
            description: Id of the parent message queried
          relationshipType:
            type: string
            enum:
              - REPLY_FORM
              - REPLY
              - FORWARD
      replies:
        type: array
        items:
          type: string
      forwards:
        type: array
        items:
          type: string
      formReplies:
        type: array
        items:
          type: string
  UserSuspension:
    type: object
    properties:
      suspended:
        type: boolean
      suspendedUntil:
        type: integer
        format: int64
      suspensionReason:
        type: string
  FollowersList:
    type: object
    properties:
      followers:
        $ref: '#/definitions/UserIdList'
  FollowersListResponse:
    type: object
    properties:
      count:
        type: integer
        format: int64
      followers:
        type: array
        items:
          type: integer
          format: int64
      pagination:
        $ref: '#/definitions/Pagination'
  FollowingListResponse:
    type: object
    properties:
      count:
        type: integer
        format: int64
      following:
        type: array
        items:
          type: integer
          format: int64
      pagination:
        $ref: '#/definitions/Pagination'

  SessionInfo:
    description: Information about the current user's session
    type: object
    properties:
      userId:
        type: integer
        format: int64
  RoomCreate:
    description: Room Creation Object. Once the chatroom is created, modify attributes and deactive/reactivate via the specific API calls.
    type: object
    properties:
      roomAttributes:
        $ref: '#/definitions/RoomAttributes'
      immutableRoomAttributes:
        $ref: '#/definitions/ImmutableRoomAttributes'
  User:
    description: User record.
    type: object
    properties:
      id:
        type: integer
        format: int64
      emailAddress:
        type: string
  Presence:
    type: object
    properties:
      category:
        type: string
        enum:
          - UNDEFINED
          - AVAILABLE
          - BUSY
          - DO_NOT_DISTURB
          - ON_THE_PHONE
          - BE_RIGHT_BACK
          - AWAY
          - OFFLINE
  V2RoomDetail:
    type: object
    properties:
      roomAttributes:
        $ref: '#/definitions/V2RoomAttributes'
      roomSystemInfo:
        $ref: '#/definitions/RoomSystemInfo'
  V2RoomAttributes:
    type: object
    properties:
      name:
        type: string
        description: Room name.
      keywords:
        type: array
        description: Keywords for search to use to find this room
        items:
          $ref: '#/definitions/RoomTag'
      description:
        type: string
        description: Room description.
      membersCanInvite:
        type: boolean
        description: If true, any chatroom participant can add new participants. If false, only owners can add new participants.
      discoverable:
        type: boolean
        description: If true, this chatroom (name, description and messages) can be searched and listed by non-participants. If false, only participants can search this room.
      public:
        type: boolean
        description: If true, this is a public chatroom. IF false, a private chatroom.
      readOnly:
        type: boolean
        description: If true, only stream owners can send messages.
      copyProtected:
        type: boolean
        description: If true, clients disable the clipboard copy for content in this stream.
  RoomSearchResults:
    description: A list of search results and counts per search parameter.
    properties:
      count:
        description: The total number of rooms matched by the search.
        type: integer
        format: int64
      skip:
        description: The number of skipped results.
        type: integer
      limit:
        description: The number of returned results.
        type: integer
      query:
        # The search query that produced this result.
        $ref: '#/definitions/RoomSearchCriteria'
      rooms:
        description: A list of rooms matched by the query.
        type: array
        items:
          $ref: '#/definitions/V2RoomDetail'
      facetedMatchCount:
        description: Detailed counts of matched rooms per search criterion.
        type: array
        items:
          $ref: '#/definitions/FacetedMatchCount'
  AdminStreamList:
    description: list of streams info
    type: object
    properties:
      count:
        type: integer
        format: int64
        description: total number of streams which match the filter criteria
      skip:
        type: integer
        description: number of streams skipped
      limit:
        type: integer
        description: maximum number of streams return
      filter:
        # filter criteria used in the request
        $ref: '#/definitions/AdminStreamFilter'
      streams:
        # list of streams
        $ref: '#/definitions/AdminStreamInfoList'
  AdminStreamInfoList:
    type: array
    description: list of stream info
    items:
      $ref: '#/definitions/AdminStreamInfo'
  AdminStreamInfo:
    description: Stream information
    type: object
    properties:
      id:
        type: string
        description: stream id
      isExternal:
        type: boolean
        description: true indicate this stream has the scope of external and false indictate this stream has the scope of internal
      isActive:
        type: boolean
        description: true indicate that this stream has the status of active and false indicate this stream has the scope of inactive
      isPublic:
        type: boolean
        description: true indicate that this stream has a privacy setting of public.  This only apply a ROOM stream type.
      type:
        type: string
        description: type of stream (IM, MIM, ROOM)
      attributes:
        # additional optional properties of the stream
        $ref: '#/definitions/AdminStreamAttributes'
  AdminStreamAttributes:
    description: additional optional properties for the stream
    type: object
    properties:
      roomName:
        type: string
        description: room name (room only)
      roomDescription:
        type: string
        description: description of the room (room only)
      members:
        type: array
        description: list of userid who is member of the stream - im or mim only
        items:
          type: integer
          format: int64
      createdByUserId:
        type: integer
        format: int64
        description: creator user id
      createdDate:
        type: integer
        format: int64
        description: created date
      lastModifiedDate:
        type: integer
        format: int64
        description: last modified date
      originCompany:
        type: string
        description: company name of the creator
      originCompanyId:
        type: integer
        description: company id of the creator
      membersCount:
        type: integer
        description: total number of members in the stream
  UserCreate:
    description: User Creation Object. After creation, modify roles, features etc via the specific API calls.
    type: object
    properties:
      userAttributes:
        $ref: '#/definitions/UserAttributes'
      password:
        $ref: '#/definitions/Password'
      roles:
        type: array
        items:
          type: string
  AdminStreamFilter:
    description: stream filter criteria
    type: object
    properties:
      streamTypes:
        description: type of streams to search for
        type: array
        items:
          $ref: '#/definitions/AdminStreamTypeEnum'
      scope:
        description: scope of the room.  If not specified, it will include both Internal and External scope
        type: string
        enum:
          - INTERNAL
          - EXTERNAL
      origin:
        description: |
          Origin of the room.
          It indicate whether the room was created by a user within the company by another company.
          If not specified, it will include both Internal and External origin.
        type: string
        enum:
          - INTERNAL
          - EXTERNAL
      status:
        description: Status of the room. If not specified, it will include both Active and Inactive status
        type: string
        enum:
          - ACTIVE
          - INACTIVE
      privacy:
        description: Privacy setting of the stream.  If not specified, it will include both public and private stream
        type: string
        enum:
          - PUBLIC
          - PRIVATE
      startDate:
        description: Start date in unix timestamp in millseconds
        type: integer
        format: int64
      endDate:
        description: End date in unix timestamp in millseconds.  If not specified, it assume to be current time.
        type: integer
        format: int64
  AdminStreamTypeEnum:
    type: object
    properties:
      type:
        type: string
        enum:
          - IM
          - MIM
          - ROOM
  MessageIdsFromStream:
    description: List of MessageIds of a Stream
    type: object
    properties:
      Data:
        type: array
        items:
          type: string
      TotalNumberFound:
        type: integer
        format: int64
      numberReturned:
        type: integer
        format: int64
      nextStartNumber:
        type: integer
        format: int64






© 2015 - 2025 Weber Informatics LLC | Privacy Policy