# Get Client Applications

# Overview
Use this APi to get details of all Client applications.
## Scope
Client application must have 'app.conversation.conversationmgr.manage' or 'app.conversation.conversationmgr.read' scope assigned.

Endpoint: GET /clientapplications
Security: oAuthClient

## Response 200 fields (application/json):

  - `paginationInfo` (object)

  - `paginationInfo.count` (integer)
    Total number of records that match criteria of API call

  - `paginationInfo.pagenum` (integer)
    Page number

  - `paginationInfo.pagesize` (integer)
    Number of results per page

  - `clientApplication` (array)

  - `clientApplication.id` (string)

  - `clientApplication.created` (string)
    Last modified time in GMT

  - `clientApplication.modified` (string)
    Last modified time in GMT

  - `clientApplication.name` (string, required)
    Unique name for client application

  - `clientApplication.description` (string)

  - `clientApplication.active` (boolean)

  - `clientApplication.roles` (array, required)

  - `clientApplication.roles.name` (string, required)
    Client aplication type
    Enum: "customer", "custom_bot", "egain_bot", "egain_agent", "custom_agent", "business_notification"

  - `clientApplication.roles.version` (string, required)
    Conversation Hub will send payload which is specific to this version.
    Enum: "v1", "v3"

  - `clientApplication.roles.callback` (string, required)
    Callback API to recieve messages from Conversation Hub sent by various participants in conversation. Callback APIs needs to respond within 5 seconds. We strongly recommend to process message asynchronously. API must return 401 if Authorization header is expired, Conversation Hub will generate new Authorization header on 401.
    Example: https://example.support.com/messaging/callback/customer

  - `clientApplication.roles.notificationEmail` (string, required)
    If client application callback is not reachable, Conversation Hub sends a notification to this email address
    Example: admin@example.com

  - `clientApplication.roles.headers` (array)
    Custom headers for callback, Conversation Hub will include these while sending message to callback

  - `clientApplication.roles.headers.name` (string, required)
    name of attribute

  - `clientApplication.roles.headers.value` (string, required)
    value of attribute

  - `clientApplication.roles.authentication` (object)
    Authentication for callback API.

  - `clientApplication.roles.authentication.id` (string, required)
    UUID generated for client application
    Example: a987d07a-d59c-11ea-87d0-0242ac13000.

## Response 400 fields (application/json):

  - `code` (string, required)
    String that follow the pattern {integer}-{integer}.
* The first part is http status code.  The code is unique as a whole. Nothing common between 400-101 and 404-101

  - `developerMessage` (string, required)
    Response explaining what happened

  - `details` (array)

  - `details.key` (string, required)

  - `details.value` (string)

  - `userMessage` (string)
    UI friendly message only supported by some API.
* Client must request explicitly by passing X-egain-error-message=yes header

## Response 401 fields (application/json):

  - `code` (string, required)
    String that follow the pattern {integer}-{integer}.
* The first part is http status code.  The code is unique as a whole. Nothing common between 400-101 and 404-101

  - `developerMessage` (string, required)
    Response explaining what happened

  - `details` (array)

  - `details.key` (string, required)

  - `details.value` (string)

  - `userMessage` (string)
    UI friendly message only supported by some API.
* Client must request explicitly by passing X-egain-error-message=yes header

## Response 403 fields (application/json):

  - `code` (string, required)
    String that follow the pattern {integer}-{integer}.
* The first part is http status code.  The code is unique as a whole. Nothing common between 400-101 and 404-101

  - `developerMessage` (string, required)
    Response explaining what happened

  - `details` (array)

  - `details.key` (string, required)

  - `details.value` (string)

  - `userMessage` (string)
    UI friendly message only supported by some API.
* Client must request explicitly by passing X-egain-error-message=yes header

## Response 404 fields (application/json):

  - `code` (string, required)
    String that follow the pattern {integer}-{integer}.
* The first part is http status code.  The code is unique as a whole. Nothing common between 400-101 and 404-101

  - `developerMessage` (string, required)
    Response explaining what happened

  - `details` (array)

  - `details.key` (string, required)

  - `details.value` (string)

  - `userMessage` (string)
    UI friendly message only supported by some API.
* Client must request explicitly by passing X-egain-error-message=yes header

## Response 500 fields (application/json):

  - `code` (string, required)
    String that follow the pattern {integer}-{integer}.
* The first part is http status code.  The code is unique as a whole. Nothing common between 400-101 and 404-101

  - `developerMessage` (string, required)
    Response explaining what happened

  - `details` (array)

  - `details.key` (string, required)

  - `details.value` (string)

  - `userMessage` (string)
    UI friendly message only supported by some API.
* Client must request explicitly by passing X-egain-error-message=yes header

