Hi,
Currently, I am working on $subject. Basically the methods in
AnalyticsDataService will be exposed through REST APIs. Please refer to
Architecture mail thread "*[Architecture] BAM 3.0 Data Layer Implementation
/ RDBMS / Distributed Indexing / Search*" for more Details. Following are
the supported REST APIs.
1. Create a table
*POST /analytics/{tableName}*
; tableName - The name of the table to be created.
2. Delete a table
*DELETE /analytics/{tableName} *
; tableName - The name of the table to be deleted.
3. Check if a table exists
*GET /analytics/{tableName} *
; tableName - The name of the table being checked.
4. List All the tables
*GET /analytics/tables*
;Response will be an JSON array of table names. e.g. [ "table1" , "table2"
, "table3" ]
5. Get the records from a table.
*GET /analytics/records/{tableName}/{from}/{to}/{start}/{count} *
; tableName - The name of the table from which the records are retrieved.
; from - The starting time to get records from.
; to - The ending time to get records to.
; start - The paginated index from value
; count - The paginated records count to be read
; response - takes the format of the request content of No.7
6. Get the records from a table (By IDs)
*POST /analytics/records/{tableName}*
; tableName - The name of the table from which the records are retrieved.
; Content - A List of IDs of the records to be retrieved in the following
format.
[ "id1" , "id2" , "id3" ]
; response - takes the format of the request content of No.7
7. Create records ( can be created in different tables or in the same )
*POST /analytics/records*
; Content - A list of records in json format like in below.
[
{
"id": "id1",
"tenantId": -1234,
"tableName": "tableName1",
"timestamp": "yyyy-mm-dd hh:mm:ss",
"values":
{
"columnName1": "value1",
"columnName2": "value2"
}
},
{
"id": "id2",
"tenantId": -1234,
"tableName": "tableName2",
"timestamp": "yyyy-mm-dd hh:mm:ss",
"values":
{
"columnName1": "value1",
"columnName2": "value2"
}
},
]
8. Delete records
*DELETE /analytics/records/{tableName}/{timeFrom}/{timeTo}*
; tableName - Name of the table from which the records are deleted.
; timeFrom - The starting time to delete records from.
; timeTo - The end time to delete records to.
9. Update records
*PUT /analytics/records*
; Content - As same as the POST method for creating records
10. Get the record count of table
*GET /analytics/count/{tableName}*
; tableName - The name of the table
11. Create Indices for a table
*POST /analytics/indices/{tableName}*
; tableName - The name of the table of which the indices are set
; Content - takes the following format. TYPE is one of "INTEGER",
"BOOLEAN", "DOUBLE", "STRING", "FLOAT", "LONG"
{
"indexColumnName1" : "TYPE1",
"indexColumnName2" : "TYPE2"
}
12. get the indices of a table
*GET /analytics/indices/{tableName}*
; tableName - The name of the table
; Response will be of the format of the previous POST request's Content.
13. Clear the indices of a table
*DELETE /analytics/indices/{tableName}*
; tableName - The name of the table
14. Search records of a table
*POST /analytics/search*
; Content - takes the following format
{
"tableName": "sampleTableName",
"language": "sampleLanguageName",
"query": "sampleQuery",
"start": "start-location-of-the-result",
"count": "maximum-number-of-entries-to-return"
}
If a method does not have a specific response mentioned above, the response
will take the following format.
{
"status" : "statusValue",
"message" : "sampleMessage"
}
Suggestions and feedbacks are appreciated.
Thanks,
--
Gimanthaa Bandara
Software Engineer
WSO2. Inc : http://wso2.com
Mobile : +94714961919
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture