Table of Contents |
---|
Data service
Data service is a REST+GraphQL based microservice following the REST and GraphQL API specifications. A 3rd party application can implement these services to return any kind of real-time and historical data to be displayed on Dashboards and Wallboards. We do not expect the data service to implement any sort of authentication on REST and/or GraphQL APIs for now.
REST APIs
Each data service must support the following endpoints with the following data:
1. Get available attributes
GET /service-name/attribute
Responses
HTTP Code | Description | Schema |
---|---|---|
200 | List of attributes and filters will be returned on success response. |
Example HTTP request
Request path
/agent-service/attribute
Example HTTP response
Response 200
{
"attributes" : [{"name": "aht", description: "Average handling time", "group": "voice", "dataType": "FLOAT", historical: true
}],
"filterAttributes" : ["team", "skillGroup"],
"multipleFilters" : true
}
2. Get filter values
GET /service-name/<name-of-filter>
Responses
HTTP Code | Description | Schema |
---|---|---|
200 | List of the values of the given filter |
Example HTTP request
Request path
/agent-service/team
Example HTTP response
Response 200
[{
"id" : 1
"name" : "team1"
},
{
"id" : 2
"name" : "team2"
}]
3. Get Service Status
GET /service-name/status
Responses
HTTP Code | Description | Schema |
---|---|---|
200 | Service is up and running | string |
Example HTTP request
Request path
/agent-service/status
Example HTTP response
Response 200
{"status": "ok"}
Schema
dataContract Anchor dataContract dataContract
...
Name | Description | Schema |
---|---|---|
attributes | List of all the attributes that the data service exposes. Example : | |
filterAttributes | List of all the filter attributes. The filterValue API will use these names to create the URL path for getting the filter values. Example : | < string > array |
multipleFilters | Should be true if data service supports multiple filter selection. Example : true | boolean |
...
Name | Description | Schema |
---|---|---|
name | Name of the attribute Example : "team1" | string |
id | Integer ID of the object. This value will be given in the arguments of the queries where filter values are required. See below for details. Example : "1" | string |
GraphQL schema
Every data service will have to expose the following GraphQL queries. Description of the schema is as follows:
Queries
Real-time data
This query will return a list of given attributes and optionally filter the list based on the provided arguments. Following input arguments must be supported:
...
[{
agentName: “SomeAgent”
AHT: “20”,
answeredEmails: “50”,
...
},
{
agentName: “SomeOtherAgent”
AHT: “30”,
answeredEmails: “60”,
...
}]
Aggregated real-time data
Each data service should support SUM and AVERAGE data aggregation of any numerical attribute and Row Count of any numerical/non-numerical attributes.
...
[{
name: “Ready”,
value: “20”
},
{
name: “Not ready”,
value: “5”
}]
Historical data
This query will give historical stats of the given attribute/s. It should support the following input arguments:
...