Dixa Queues API

The Queues API from Dixa — 5 operation(s) for queues.

OpenAPI Specification

dixa-queues-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Dixa Agents Queues API
  version: beta
servers:
- url: https://dev.dixa.io
security:
- ApiKeyAuth: []
tags:
- name: Queues
paths:
  /beta/queues:
    get:
      tags:
      - Queues
      summary: List queues
      description: List all queues in an organization.
      operationId: getQueues
      responses:
        '200':
          description: The list of queues in an organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListQueuesOutput'
              example:
                data:
                - id: 497d2cb4-6b48-4fa2-99d2-21c2a5bad79f
                  name: MyCorp main queue
                  isDefault: true
                  organizationId: 927d4b48-966b-45a3-8d7c-c6ad64f877b0
                  queueThresholds:
                    SlaPercentage: 10
                  slaCalculationMethod: AbandonedIgnored
                  offerTimeout: 10
                  offeringAlgorithm: OneAtATimeRandom
                  memberListType: SkillBased
                  usages:
                    queueId: 497d2cb4-6b48-4fa2-99d2-21c2a5bad79f
                    usages:
                      WidgetChat:
                      - c6f50127-7f0a-418f-943e-c62b96d8a742
                      - b2ac94ac-379a-4f24-995a-6473809eef6b
                      PstnPhone:
                      - '+4589977790'
                      Email:
                      - info@mycorp.dixa.io
                  wrapupTimeout: 10
                  priority: 1
                  offerAbandonedConversations: false
                  doNotOfferTimeouts:
                    WidgetChat: 1
                  isDoNotOfferEnabled: true
                  isPreferredAgentEnabled: false
                  preferredAgentTimeouts:
                    WhatsApp: 300
                    Voicemail: 300
                    WidgetChat: 300
                    FacebookMessenger: 300
                    Email: 43200
                    ContactForm: 43200
                    Callback: 300
                    PstnPhone: 300
                  preferredAgentOfflineTimeout: 500
                  personalAgentOfflineTimeout: 500
                  isRestricted: false
                - id: 921a6e00-0845-417e-9c67-f7cb872d45f0
                  name: MyCorp email queue
                  isDefault: true
                  organizationId: 927d4b48-966b-45a3-8d7c-c6ad64f877b0
                  queueThresholds:
                    SlaPercentage: 10
                  slaCalculationMethod: AbandonedIgnored
                  offerTimeout: 10
                  offeringAlgorithm: OneAtATimeRandom
                  memberListType: SkillBased
                  usages:
                    queueId: 921a6e00-0845-417e-9c67-f7cb872d45f0
                    usages:
                      Email:
                      - info@mycorp.dixa.io
                  wrapupTimeout: 10
                  priority: 1
                  offerAbandonedConversations: false
                  doNotOfferTimeouts:
                    WidgetChat: 1
                  isDoNotOfferEnabled: true
                  isPreferredAgentEnabled: false
                  preferredAgentOfflineTimeout: 500
                  personalAgentOfflineTimeout: 500
                  isRestricted: false
        '400':
          description: Invalid value extracted from request context
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
              example:
                message: Invalid value in request
        '500':
          description: Internal failure during request processing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerError'
              example:
                message: There was an internal server error while processing the request
    post:
      tags:
      - Queues
      summary: Create queue
      description: Create a queue.
      operationId: postQueues
      requestBody:
        description: The details for creating a queue
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateQueueInput'
            example:
              request:
                name: MyCorp main queue
                callFunctionality: false
                isDefault: true
                queueThresholds:
                  WaitingConversations: 10
                offerTimeout: 10
                offerAlgorithm: AllAtOnce
                wrapupTimeout: 10
                priority: 1
                offerAbandonedConversations: false
                doNotOfferTimeouts:
                  WidgetChat: 1
                isDoNotOfferEnabled: true
                preferredAgentTimeouts:
                  WhatsApp: 300
                  Voicemail: 300
                  WidgetChat: 300
                  FacebookMessenger: 300
                  Email: 43200
                  ContactForm: 43200
                  Callback: 300
                  PstnPhone: 300
                isPreferredAgentEnabled: false
                preferredAgentOfflineTimeout: 500
                personalAgentOfflineTimeout: 500
                isRestricted: false
        required: true
      responses:
        '201':
          description: The created queue
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateQueueOutput'
        '400':
          description: 'Invalid value extracted from request context, Invalid value for: body'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
              example:
                message: Invalid value in request
        '500':
          description: Internal failure during request processing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerError'
              example:
                message: There was an internal server error while processing the request
  /beta/queues/{queueId}/members:
    get:
      tags:
      - Queues
      summary: List agents
      description: List all agents/admins that are members of a queue by providing the queue id.
      operationId: getQueuesQueueidMembers
      parameters:
      - name: queueId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: List of the agents/admins that are members of a queue
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueueMembersOutput'
              example:
                data:
                - agentId: e96647c1-f697-4328-868a-19f828a6ee46
                  priority: 1
                - agentId: 95dfa97e-dbf5-4bfc-be64-1f834baebd4e
                  priority: 2
        '400':
          description: 'Invalid value for: path parameter queueId, Invalid value extracted from request context'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
              example:
                message: Invalid value in request
        '404':
          description: An entity in this request could not be found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'
              example:
                message: The requested resource could not be found
        '500':
          description: Internal failure during request processing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerError'
              example:
                message: There was an internal server error while processing the request
    delete:
      tags:
      - Queues
      summary: Remove agents
      description: Bulk remove agents/admins from the specified queue.
      operationId: deleteQueuesQueueidMembers
      parameters:
      - name: queueId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        description: The list of agents/admins to be removed from the queue. Up to 10 members can be specified.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkQueueEndpointInput'
            example:
              agentIds:
              - 743c3781-c882-4352-a1fa-fe5d7a673cfd
              - cad2f234-8cec-4cd8-96e9-a6491a0176da
        required: true
      responses:
        '204':
          description: The bulk operation succeeded
        '400':
          description: 'Invalid value for: path parameter queueId, Invalid value extracted from request context, Invalid value for: body'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
              example:
                message: Invalid value in request
        '404':
          description: An entity in this request could not be found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'
              example:
                message: The requested resource could not be found
        '500':
          description: Internal failure during request processing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerError'
              example:
                message: There was an internal server error while processing the request
    patch:
      tags:
      - Queues
      summary: Assign agents
      description: Assign one or more agents/admins to a given queue.
      operationId: patchQueuesQueueidMembers
      parameters:
      - name: queueId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        description: The list of agents/admins to be added to the queue
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkQueueEndpointInput'
            example:
              agentIds:
              - c31e5e3f-1d5f-4442-83df-fd7bddd59da4
              - 26ae145b-8644-4fa5-aa56-7b3dcacbe2d4
        required: true
      responses:
        '200':
          description: The list of patch action outcomes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkQueueEndpointOutput'
              example:
                data:
                - data: b41558f2-3807-44ef-8abf-a73d5ef68ff6
                  _type: BulkActionSuccess
                - error:
                    id: 914a6e19-cab7-41a7-b41b-517e0ed56161
                    message: User not found
                    _type: NotFound
                  _type: BulkActionFailure
                - error:
                    id: 7fecdb7e-9e37-45ef-be5e-0c14d6687aa0
                    message: Member is neither Agent or Admin
                    _type: Validation
                  _type: BulkActionFailure
        '400':
          description: 'Invalid value for: path parameter queueId, Invalid value extracted from request context, Invalid value for: body'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
              example:
                message: Invalid value in request
        '404':
          description: An entity in this request could not be found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'
              example:
                message: The requested resource could not be found
        '500':
          description: Internal failure during request processing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerError'
              example:
                message: There was an internal server error while processing the request
  /beta/queues/{queueId}/availability:
    get:
      tags:
      - Queues
      summary: Get queue availability
      description: Get availability of supported channels for a given queue. Currently supported channels are adachat, kindlychat, digitalgeniuschat, genericapimessaging.
      operationId: getQueuesQueueidAvailability
      parameters:
      - name: queueId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: The availability of supported channels for a given queue
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueueAvailabilityOutput'
              example:
                data:
                - channelAvailability:
                    genericChannelName: adachat
                    availability: NotAvailable
                    queueSize: 10
                    _type: GenericChannel
                  _type: Success
                - error:
                    channel: kindlychat
                    message: Could not get availability for channel
                    _type: UnexpectedError
                  _type: Failure
        '400':
          description: 'Invalid value for: path parameter queueId, Invalid value extracted from request context ,queue does not exist'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
              example:
                message: Decoding failure in request
        '409':
          description: The request could not be completed due to no supported channels configured for this organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Conflict'
        '500':
          description: Internal failure during request processing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerError'
              example:
                message: There was an internal server error while processing the request
  /beta/queues/{queueId}:
    get:
      tags:
      - Queues
      summary: Get queue
      description: Get a queue by id.
      operationId: getQueuesQueueid
      parameters:
      - name: queueId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: The queue
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetQueueByIdOutput'
              example:
                data:
                  id: 0bf82493-ae46-4c49-aa29-0422136269be
                  name: MyCorp main queue
                  isDefault: true
                  organizationId: 3de6c0f1-5e84-4d29-9ce9-84033983d4e6
                  queueThresholds:
                    SlaPercentage: 10
                  slaCalculationMethod: AbandonedIgnored
                  offerTimeout: 10
                  offeringAlgorithm: OneAtATimeRandom
                  memberListType: SkillBased
                  usages:
                    queueId: 0bf82493-ae46-4c49-aa29-0422136269be
                    usages:
                      WidgetChat:
                      - c6f50127-7f0a-418f-943e-c62b96d8a742
                      - b2ac94ac-379a-4f24-995a-6473809eef6b
                      PstnPhone:
                      - '+4589977790'
                      Email:
                      - info@mycorp.dixa.io
                  wrapupTimeout: 10
                  priority: 1
                  offerAbandonedConversations: false
                  doNotOfferTimeouts:
                    WidgetChat: 1
                  isDoNotOfferEnabled: true
                  isPreferredAgentEnabled: false
                  preferredAgentTimeouts:
                    WhatsApp: 300
                    Voicemail: 300
                    WidgetChat: 300
                    FacebookMessenger: 300
                    Email: 43200
                    ContactForm: 43200
                    Callback: 300
                    PstnPhone: 300
                  preferredAgentOfflineTimeout: 500
                  personalAgentOfflineTimeout: 500
                  isRestricted: true
        '400':
          description: 'Invalid value for: path parameter queueId, Invalid value extracted from request context'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
              example:
                message: Invalid value in request
        '404':
          description: An entity in this request could not be found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'
              example:
                message: The requested resource could not be found
        '500':
          description: Internal failure during request processing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerError'
              example:
                message: There was an internal server error while processing the request
  /beta/queues/conversation-position/{csid}:
    get:
      tags:
      - Queues
      summary: Get the position of the conversation in its current queue
      description: Get the approximate position of a given conversation in its current queue.
      operationId: getQueuesConversation-positionCsid
      parameters:
      - name: csid
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: The position of the conversation in the queue
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetQueuedConversationPositionOutput'
              example:
                data:
                  position: 10
                  queuedAt: '2021-12-01T13:00:00.003Z'
        '400':
          description: 'Invalid value for: path parameter csid, Invalid value extracted from request context'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
              example:
                message: Decoding failure in request
        '404':
          description: An entity in this request could not be found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'
              example:
                message: The requested resource could not be found
        '500':
          description: Internal failure during request processing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerError'
              example:
                message: There was an internal server error while processing the request
components:
  schemas:
    Queue1:
      title: Queue
      type: object
      required:
      - id
      - name
      - isDefault
      - organizationId
      - queueThresholds
      - slaCalculationMethod
      - doNotOfferTimeouts
      - isDoNotOfferEnabled
      properties:
        id:
          type: string
        name:
          type: string
        isDefault:
          type: boolean
        organizationId:
          type: string
        queueThresholds:
          $ref: '#/components/schemas/Map_QueueThreshold_Int'
        slaCalculationMethod:
          description: 'values: [AbandonedIgnored]'
          type: string
        offerTimeout:
          type: integer
          format: int32
        offeringAlgorithm:
          description: 'values: [AgentPriorityOneAtATimeRandom, AllAtOnce, AgentPriorityLongestIdle, AgentPriorityAllAtOnce, LongestIdle, OneAtATimeRandom]'
          type: string
        memberListType:
          description: 'values: [Default, SkillBased]'
          type: string
        usages:
          $ref: '#/components/schemas/QueueUsages'
        wrapupTimeout:
          type: integer
          format: int32
        priority:
          type: integer
          format: int32
        offerAbandonedConversations:
          type: boolean
        doNotOfferTimeouts:
          $ref: '#/components/schemas/Map_ConversationChannel_Int'
        isDoNotOfferEnabled:
          type: boolean
        isPreferredAgentEnabled:
          type: boolean
        preferredAgentTimeouts:
          $ref: '#/components/schemas/Map_ConversationChannel_Int'
        preferredAgentOfflineTimeout:
          type: integer
          format: int32
        personalAgentOfflineTimeout:
          type: integer
          format: int32
        isRestricted:
          type: boolean
    Integrity:
      title: Integrity
      type: object
      required:
      - id
      - message
      properties:
        id:
          type: string
        message:
          type: string
    CreateQueueOutput:
      title: CreateQueueOutput
      type: object
      required:
      - data
      properties:
        data:
          $ref: '#/components/schemas/Queue1'
    GetQueuedConversationPositionOutput:
      title: GetQueuedConversationPositionOutput
      type: object
      required:
      - data
      properties:
        data:
          $ref: '#/components/schemas/QueuedConversation'
    NotFound:
      title: NotFound
      type: object
      required:
      - message
      properties:
        message:
          type: string
    Map_QueueThreshold_Int:
      title: Map_QueueThreshold_Int
      description: 'values: [SlaTimeLimit, AvailableAgents, LongestWait, SlaPercentage, WaitingConversations]'
      type: object
      additionalProperties:
        type: integer
        format: int32
    GenericChannel:
      title: GenericChannel
      type: object
      required:
      - genericChannelName
      - availability
      properties:
        genericChannelName:
          type: string
        availability:
          description: 'values: [Available, NotAvailable]'
          type: string
        queueSize:
          description: The number of conversations currently waiting in the queue. This field will only be present if the queue availability is NotAvailable.
          type: integer
          format: int32
    QueueUsages:
      title: QueueUsages
      type: object
      required:
      - queueId
      - usages
      properties:
        queueId:
          type: string
        usages:
          $ref: '#/components/schemas/Map_ConversationChannel_Set_String'
    QueueMembersOutput:
      title: QueueMembersOutput
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/QueueMember'
    BulkActionFailure_BulkError_UUID:
      title: BulkActionFailure_BulkError_UUID
      type: object
      required:
      - error
      properties:
        error:
          $ref: '#/components/schemas/BulkError'
    ChannelAvailability:
      title: ChannelAvailability
      oneOf:
      - $ref: '#/components/schemas/GenericChannel'
    CreateOrUpdateQueueRequest:
      title: CreateOrUpdateQueueRequest
      type: object
      required:
      - name
      - callFunctionality
      - isDefault
      - isDoNotOfferEnabled
      properties:
        name:
          type: string
        callFunctionality:
          type: boolean
        isDefault:
          type: boolean
        queueThresholds:
          $ref: '#/components/schemas/Map_QueueThreshold_Int'
        offerTimeout:
          type: integer
          format: int32
        offerAlgorithm:
          description: 'values: [AgentPriorityOneAtATimeRandom, AllAtOnce, AgentPriorityLongestIdle, AgentPriorityAllAtOnce, LongestIdle, OneAtATimeRandom]'
          type: string
        wrapupTimeout:
          type: integer
          format: int32
        priority:
          type: integer
          format: int32
        offerAbandonedConversations:
          type: boolean
        doNotOfferTimeouts:
          $ref: '#/components/schemas/Map_ConversationChannel_Int'
        isDoNotOfferEnabled:
          type: boolean
        preferredAgentTimeouts:
          $ref: '#/components/schemas/Map_ConversationChannel_Int'
        isPreferredAgentEnabled:
          type: boolean
        preferredAgentOfflineTimeout:
          type: integer
          format: int32
        personalAgentOfflineTimeout:
          type: integer
          format: int32
        isRestricted:
          type: boolean
    Validation:
      title: Validation
      type: object
      required:
      - message
      properties:
        id:
          type: string
        message:
          type: string
    ErrorResponse:
      title: ErrorResponse
      type: object
      required:
      - message
      properties:
        message:
          type: string
    ServerError:
      title: ServerError
      type: object
      required:
      - message
      properties:
        message:
          type: string
    UnexpectedError:
      title: UnexpectedError
      type: object
      required:
      - channel
      - message
      properties:
        channel:
          type: string
        message:
          type: string
    BadRequest:
      title: BadRequest
      type: object
      required:
      - message
      properties:
        message:
          type: string
    BulkActionOutcome_BulkError_UUID:
      title: BulkActionOutcome_BulkError_UUID
      oneOf:
      - $ref: '#/components/schemas/BulkActionFailure_BulkError_UUID'
      - $ref: '#/components/schemas/BulkActionSuccess_BulkError_UUID'
    ListQueuesOutput:
      title: ListQueuesOutput
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Queue1'
    BulkActionSuccess_BulkError_UUID:
      title: BulkActionSuccess_BulkError_UUID
      type: object
      required:
      - data
      properties:
        data:
          type: string
          format: uuid
    ChannelAvailabilityError:
      title: ChannelAvailabilityError
      oneOf:
      - $ref: '#/components/schemas/UnexpectedError'
    Infrastructure:
      title: Infrastructure
      type: object
      required:
      - id
      - message
      properties:
        id:
          type: string
        message:
          type: string
    BulkQueueEndpointInput:
      title: BulkQueueEndpointInput
      type: object
      properties:
        agentIds:
          type: array
          uniqueItems: true
          items:
            type: string
            format: uuid
    QueueAvailabilityOutput:
      title: QueueAvailabilityOutput
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ChannelAvailabilityOutcome'
    Conflict:
      title: Conflict
      type: object
      required:
      - message
      properties:
        message:
          type: string
    Map_ConversationChannel_Set_String:
      title: Map_ConversationChannel_Set_String
      description: 'values: [WhatsApp, Voicemail, WidgetChat, FacebookMessenger, Twitter, Email, ContactForm, Callback, PstnPhone, Sms, Messenger]'
      type: object
      additionalProperties:
        type: array
        uniqueItems: true
        items:
          type: string
    InvalidArgument:
      title: InvalidArgument
      type: object
      required:
      - message
      properties:
        message:
          type: string
    QueueMember:
      title: QueueMember
      type: object
      required:
      - agentId
      properties:
        agentId:
          type: string
        priority:
          type: integer
          format: int32
    CreateQueueInput:
      title: CreateQueueInput
      type: object
      required:
      - request
      properties:
        request:
          $ref: '#/components/schemas/CreateOrUpdateQueueRequest'
    QueuedConversation:
      title: QueuedConversation
      type: object
      required:
      - queuedAt
      properties:
        position:
          description: Approximate position of the conversation in the current queue
          type: integer
          format: int32
        queuedAt:
          type: string
          format: date-time
    GetQueueByIdOutput:
      title: GetQueueByIdOutput
      type: object
      required:
      - data
      properties:
        data:
          $ref: '#/components/schemas/Queue1'
    Success:
      title: Success
      type: object
      required:
      - channelAvailability
      properties:
        channelAvailability:
          $ref: '#/components/schemas/ChannelAvailability'
    BulkError:
      title: BulkError
      oneOf:
      - $ref: '#/components/schemas/EmptyPatchSet'
      - $ref: '#/components/schemas/ErrorResponse'
      - $ref: '#/components/schemas/Infrastructure'
      - $ref: '#/components/schemas/Integrity'
      - $ref: '#/components/schemas/InvalidArgument'
      - $ref: '#/components/schemas/NotFound1'
      - $ref: '#/components/schemas/Validation'
    BulkQueueEndpointOutput:
      title: BulkQueueEndpointOutput
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/BulkActionOutcome_BulkError_UUID'
    Map_ConversationChannel_Int:
      title: Map_ConversationChannel_Int
      description: 'values: [WhatsApp, Voicemail, WidgetChat, FacebookMessenger, Twitter, Email, ContactForm, Callback, PstnPhone, Sms, Messenger]'
      type: object
      additionalProperties:
        type: integer
        format: int32
    NotFound1:
      title: NotFound
      type: object
      required:
      - id
      - message
      properties:
        id:
          type: string
        message:
          type: string
    EmptyPatchSet:
      title: EmptyPatchSet
      type: object
      required:
      - id
      - message
      properties:
        id:
          type: string
        message:
          type: string
    ChannelAvailabilityOutcome:
      title: ChannelAvailabilityOutcome
      oneOf:
      - $ref: '#/components/schemas/Failure'
      - $ref: '#/components/schemas/Success'
    Failure:
      title: Failure
      type: object
      required:
      - error
      properties:
        error:
          $ref: '#/components/schemas/ChannelAvailabilityError'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      name: Authorization
      in: header